【发布时间】:2020-01-20 12:50:05
【问题描述】:
我在 ubuntu (ec2-instance) 服务器上使用 nginx 运行 dockerized django 应用程序。我的想法是使用 docker-machine 进行部署。
当我 ssh 进入我的 EC2 并将我的应用程序复制到那里,然后启动我的 docker-compose 文件时,一切正常并且应用程序运行完美。但我想在不通过 ssh 进入服务器但使用 docker 机器的情况下启动我的容器。
当我将执行命令指向我的 EC2 实例并运行相同的命令 (docker-compose -f production.yml up --build) 时,我收到以下错误:
无法启动服务生产-nginx-container:OCI运行时创建失败:container_linux.go:346:启动容器进程导致“process_linux.go:449:容器初始化导致\”rootfs_linux.go:58:挂载\\”/用户/myuser/myfolder/myproject/compose/production/nginx/myconf.conf\\" 到 rootfs \\"/var/lib/docker/overlay2/44675a2cf4ac6e3052c9df3bd6fbb35b1ece33736d632199572c6a1c90965c12/merged\\" 在 \\"/var/lib/docker /overlay2/44675a2cf4ac6e3052c9df3bd6fbb35b1ece33736d632199572c6a1c90965c12/merged/etc/nginx/conf.d/default.conf\\" 导致\\"not a directory\\"\"":未知:您是否尝试将目录挂载到文件上(或反之-反之亦然)?检查指定的主机路径是否存在并且是预期的类型
我认为 docker 抱怨的是这一行:
- ./compose/production/nginx/myconf.conf:/etc/nginx/conf.d/default.conf
我正在尝试将我的配置从我的 nginx 文件映射到 nginx docker 容器的默认配置中。 myconf.conf 在那里,它是一个文件。
我的猜测是将文件从本地计算机安装到服务器上的容器时出现问题?但我不知道如何解决这个问题....此外,关于这个错误的其他问题也让我无所适从。
我使用指向实例的 docker 机器运行的命令不应该与我 ssh 进入我的实例并从那里运行它时完全相同吗?不幸的是,我对 docker 的了解有限。如果有人可以向我伸出援助之手,我将不胜感激。
提前非常感谢,请在下面查看我的配置:
production-nginx-container:
container_name: 'production-nginx-container'
image: nginx:latest
ports:
- "80:80"
- "443:443"
volumes:
- ./compose/production/nginx/myconf.conf:/etc/nginx/conf.d/default.conf
- /etc/letsencrypt/live/mydomain.de/fullchain.pem:/etc/letsencrypt/live/mydomain.de/fullchain.pem
- /etc/letsencrypt/live/mydomain.de/privkey.pem:/etc/letsencrypt/live/mydomain.de/privkey.pem
depends_on:
- django
【问题讨论】:
标签: django docker docker-compose docker-machine