nginx - 当我尝试在 docker-compose 上将 nginx 部署到 MinIO 时出错
问题描述
我正在尝试在 docker 桌面(Windows 版本)上创建一个容器。我的项目包含一些容器。
我需要创建一个容器来运行 MinIO 来模拟 S3 存储桶。我在官方上得到了 docker-compose 文件。
我的 docker-compose.yml是这样的:
services:
rabbitmq:
image: rabbitmq:3-management
container_name: rabbitmq
restart: always
ports:
- 5672:5672
- 15672:15672
volumes:
- ./dados:/var/lib/rabbitmq/
environment:
- RABBITMQ_DEFAULT_USER=admin
- RABBITMQ_DEFAULT_PASS=password
minio1:
image: minio/minio:RELEASE.2021-06-17T00-10-46Z
hostname: minio1
volumes:
- ./dados/minios3/data1-1:/data1
- ./dados/minios3/data1-2:/data2
expose:
- "9000"
environment:
MINIO_ROOT_USER: minio
MINIO_ROOT_PASSWORD: minio123
command: server http://minio{1...4}/data{1...2}
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
nginx:
image: nginx:1.19.2-alpine
hostname: nginx
volumes:
- ./dados/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
ports:
- 9000:9000
depends_on:
- minio1
唯一的区别是我将卷路径更改为我的目录,脚本的其余部分来自官方文档。
当我运行docker-compose up -d
命令时,所有容器都被创建,除了 Nginx。显示错误。
Creating microservicos_nginx_1 ... error
ERROR: for microservicos_nginx_1 Cannot start service nginx: OCI runtime create failed: container_linux.go:367: starting container process caused: process_linux.go:495: container init caused: rootfs_linux.go:60: mounting "/run/desktop/mnt/host/d/Projetos Dev/Microservicos/dados/nginx/nginx.conf" to rootfs at "/var/lib/docker/overlay2/310cee7797b9810694b18473c914d21cdad5422d7c0945f06464163f67d605aa/merged/etc/nginx/nginx.conf" caused: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type
ERROR: for nginx Cannot start service nginx: OCI runtime create failed: container_linux.go:367: starting container process caused: process_linux.go:495: container init caused: rootfs_linux.go:60: mounting "/run/desktop/mnt/host/d/Projetos Dev/Microservicos/dados/nginx/nginx.conf" to rootfs at "/var/lib/docker/overlay2/310cee7797b9810694b18473c914d21cdad5422d7c0945f06464163f67d605aa/merged/etc/nginx/nginx.conf" caused: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type
ERROR: Encountered errors while bringing up the project.
原来的 docker-compose.yml 是:
version: '3.7'
services:
minio1:
image: minio/minio:RELEASE.2021-06-17T00-10-46Z
hostname: minio1
volumes:
- data1-1:/data1
- data1-2:/data2
expose:
- "9000"
environment:
MINIO_ROOT_USER: minio
MINIO_ROOT_PASSWORD: minio123
command: server http://minio{1...4}/data{1...2}
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
minio2:
image: minio/minio:RELEASE.2021-06-17T00-10-46Z
hostname: minio2
volumes:
- data2-1:/data1
- data2-2:/data2
expose:
- "9000"
environment:
MINIO_ROOT_USER: minio
MINIO_ROOT_PASSWORD: minio123
command: server http://minio{1...4}/data{1...2}
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
minio3:
image: minio/minio:RELEASE.2021-06-17T00-10-46Z
hostname: minio3
volumes:
- data3-1:/data1
- data3-2:/data2
expose:
- "9000"
environment:
MINIO_ROOT_USER: minio
MINIO_ROOT_PASSWORD: minio123
command: server http://minio{1...4}/data{1...2}
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
minio4:
image: minio/minio:RELEASE.2021-06-17T00-10-46Z
hostname: minio4
volumes:
- data4-1:/data1
- data4-2:/data2
expose:
- "9000"
environment:
MINIO_ROOT_USER: minio
MINIO_ROOT_PASSWORD: minio123
command: server http://minio{1...4}/data{1...2}
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
nginx:
image: nginx:1.19.2-alpine
hostname: nginx
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
ports:
- "9000:9000"
depends_on:
- minio1
- minio2
- minio3
- minio4
有人知道为什么会发生此错误以及如何解决?
解决方案
您不需要添加 Nginx 文件名:nginx.conf
. 只要有它的路径:
修改这个:
- ./dados/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
至
- ./dados/nginx/:/etc/nginx/
并确保两条路径都正确:
./dados/nginx/
/etc/nginx/
这是我的,它可以正常工作并注意卷部分(它不适合 MINIO)
webserver:
depends_on:
- wordpress
image: nginx:1.18.0-alpine
container_name: webserver
restart: unless-stopped
ports:
- "80:80"
volumes:
- ./html:/var/www/html
- ./nginx:/etc/nginx/conf.d
networks:
- wp-network
推荐阅读
- r - 跟踪使用 rmarkdown 准备的期刊文章中的更改以与非 R 用户进行通信
- bash - 在 CLI 中优雅地显示分离的头部
- swift - 转动屏幕时自动布局位置问题
- c# - 如何通过 appsettings/configuration 传递请求正文限制属性值?
- laravel - Algolia/Scout - 阻止某些更新的操作更新
- download - 我想制作一个可以从网站自动下载文件的程序
- javascript - 在搜索结果中包含嵌套的地图数组值
- c# - 如何解决“CancellationTokenSource 已被处理”错误?
- javascript - 从 url 导入 json 文件
- c++ - 条件语句输出错误的命令