我一直在关注一个博客,该博客通过https://blog.harveydelaney.com/hosting-websites-using-docker-nginx/
使用SSL设置Nginx本文引用了一个docker-compose.yml
文件,该文件开头没有指定版本,但我认为它至少是版本2,因为它确实引用了其中的volumes_from
设置。版本3不再支持此volumes_from
。
有人可以帮助将以下文件迁移到版本3吗?我是docker / docker-compose / K8s世界的新手。
version: "3.8"
services:
proxy:
image: jwilder/nginx-proxy
container_name: nginx-proxy
ports:
- '80:80'
- '443:443'
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- /etc/nginx/vhost.d
- /usr/share/nginx/html
- C:\Data\DockerData\nginxSSL\certs:/etc/nginx/certs:ro
ssl-companion:
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: ssl-companion
volumes:
- C:\Data\DockerData\nginxSSL\certs:/etc/nginx/certs:rw
- /var/run/docker.sock:/var/run/docker.sock:ro
volumes_from: # <-- version 3 doesn't like this
- proxy
depends_on:
- proxy
答案后更新:(适用于希望查找有问题的答案的人)
第3版不再支持volumes_from
,根据以下David的回答,有两种选择:
答案 0 :(得分:1)
Compose file version 3 upgrade nodes说:
volumes_from
:要在服务之间共享卷,请使用top-levelvolumes
option对其进行定义,并使用service-levelvolumes
option从共享该内容的每个服务中对其进行引用。
您必须对要共享的每个目录执行此操作。对于nginx虚拟主机目录,例如:
version: '3'
volumes:
vhosts: # can be empty
services:
proxy:
volumes:
- vhosts:/etc/nginx/vhost.d
ssl-companion:
volumes:
- vhosts:/etc/nginx/vhost.d
使用volumes_from:
选项通常有点不寻常:它涉及到一个容器要使用另一个容器的每个卷,并且它们的文件系统布局兼容,以便它们可以使用精确的相同的路径。
(您在问题中提到了Kubernetes。在Kubernetes Pod之间共享文件非常棘手,因为大多数标准卷类型一次只能安装在一个位置,通常,您应该尝试围绕需要共享的卷进行设计[甚至在普通Docker中]。在这种特定情况下,两个进程紧密相连,您可以创建一个emptyDir
卷,以在单个容器中的两个容器之间共享,但这通常是不寻常的设置。)