我正在尝试使用docker compose创建Nginx / PHP FPM设置,并且遇到版本3卷语法/更改的问题。
我的Dockerfile
:
FROM php:7-fpm
VOLUME /var/www/html
我的docker-compose.yml
:
version: "3"
services:
php:
build: .
volumes:
- ./html:/var/www/html
web:
image: nginx
links:
- php
ports:
- "8888:80"
volumes:
- php:/var/www/html
- ./default.conf:/etc/nginx/conf.d/default.conf
volumes:
php:
当我将index.php
文件添加到./html
时,我可以通过转到http://localhost:8888来查看,但是任何静态文件(如CSS)都会返回404,因为Nginx无法找到它的容器(/var/www/html
在nginx容器上是空的)。使用版本3 docker compose文件不再有volumes_from
,这基本上就是我想要复制的内容。
如何才能将其与版本3配合使用?
答案 0 :(得分:26)
使用“命名卷”在容器之间共享文件需要定义
1)yml文件顶层的volumes:
部分,并定义卷名
volumes:
php:
2)在第一个容器上定义volume
部分,就像你所做的那样(共享将挂载)
web:
volumes:
- php:/var/www/html #<container_name>:<mount_point>
3)在第二个容器上定义volume
部分(Share将从中挂载)
php:
volumes:
- php:/var/www/html
4)(可选)如果您需要在主机上存储卷数据,可以使用local-persist docker插件。您可以指定docker volume driver和存储数据的路径。
volumes:
php:
driver: local-persist
driver_opts:
mountpoint: /path/on/host/machine/
在你的情况下,你忘了为php
容器定义卷名。只需替换
php:
build: .
volumes:
- ./html:/var/www/html
到
php:
build: .
volumes:
- php:/var/www/html
并使用Local Persist Docker插件