给定以下docker-compose.yml设置:
version: '3.7'
services:
reverse:
container_name: nginx-reverse-proxy
hostname: nginx-reverse-proxy
image: nginx:stable
ports:
- 80:80
- 433:433
volumes:
- type: bind
source: ./config
target: /etc/nginx
consistency: consistent这将导致将./config文件夹映射到容器nginx-reverse-proxy,从而映射到容器内的空/etc/nginx目录。
目标:
将文件夹从容器映射到主机。在我的示例中,从容器/etc/nginx 到主机./config。
我当前的搜索不断地将directoy 从主机映射到容器(我不想这样做)。
如有任何提示或解决方案,将不胜感激。谢谢!
我目前的解决方案很难看:我用docker创建了容器,并将文件从/etc/nginx复制到./config。移除容器并使用docker-compose up工作并启动nginx,因为所需的文件已经在主机上。
编辑:该文件夹在创建时不存在。正在创建文档中所述的文件夹。
发布于 2019-12-17 07:53:16
阅读:码头工人卷页
与绑定挂载相比,卷有几个优点: 新卷可以由容器预先填充其内容。
因此,一个简单的docker-组合(在一个名为nginx的文件夹中):
version: "3.7"
volumes:
xmpl:
services:
testnginx:
image: nginx:stable
volumes:
- xmpl:/etc/nginx将通过以下方式生成主机系统上的所有文件:
$ docker-compose up
$ docker inspect nginx_xmpl
...
"Mountpoint": "/var/lib/docker/volumes/nginx_xmpl/_data"然后可以查看主机上的文件。
# ls /var/lib/docker/volumes/nginx_xmpl/_data
conf.d fastcgi_params koi-utf koi-win
mime.types modules nginx.conf scgi_params
uwsgi_params win-utf最后,在./config中使用它
# ln -s /var/lib/docker/volumes/nginx_xmpl/_data ./config
# ls config
conf.d fastcgi_params koi-utf koi-win
mime.types modules nginx.conf scgi_params
uwsgi_params win-utf发布于 2019-12-10 12:09:37
一般来说,这是不可能的,因为容器只是“可运行的图像”,并且像一批zip文件一样存储在fs中。在run事件中,它们被平放到一个“文件夹”中,Linux在其中执行chroot并使用此根用户启动进程。
您可以选择在进程结束时将一些路径从主机操作系统映射到chrooted folder中的某些路径,但不能映射回来的方式。当Docker进行映射时,它将完全replaces路径,因此路径中的所有现有文件都将“隐藏”在图像fs中,并被映射的主机路径“替换”。
我认为您希望查看图像中的路径的“默认文件配置”。在我看来,有两种方法:
/export映射到主机的./exported-configs,当容器启动时,使用docker exec {.... extra params and docker ps id} bash进入正在运行的容器,并运行类似于cp -R /etc/nginx /export/nginx-configs的内容。这两种方法都是有效的,通常,如果我需要从图像中找到任何文件夹,我就做第一个。
祝好运!
发布于 2019-12-11 09:58:28
好吧,你不应该像你那样做地图,因为你说它很难看。最方便、最轻松的方法是这样做:
version: '3.7'
services:
reverse:
container_name: nginx-reverse-proxy
hostname: nginx-reverse-proxy
image: nginx:stable
ports:
- 80:80
- 433:433
volumes:
- ./nginx-conf/myapp/nginx.conf:/etc/nginx/nginx.conf
- ./nginx-conf/myapp/sites-enabled:/etc/nginx/sites-enabled
volumes:
nginx-conf:
networks:
myapp-net:
driver: bridge位置/etc/nginx还包含其他文件,例如,如果映射主机目录./config,这些文件(例如mime.types和fastcgi_params )将不存在,除非您将它们复制到主机,但这不是一个很好的解决方案。
上面,我刚刚将位于/nginx/myapp文件夹中的本地nginx.conf文件映射到/etx/nginx/nginx.conf,并将一个本地站点启用文件夹映射到容器中的/etc/nginx/site。
你会更好地保持事情尽可能简单,因为码头已经复杂的性质。
https://stackoverflow.com/questions/59159241
复制相似问题