如何在独立的NGINX和PHP-FPM容器之间传递仅包含代码,基于busybox的容器化PHP应用程序的代码?我使用了docker compose的第三个版本。
包含代码的镜像的Dockerfile如下:
FROM busybox
#the app's code
RUN mkdir /app
VOLUME /app
#copy the app's code from the context into the image
COPY code /app
docker-compose.yml文件应该是这样的:
version: "3"
services:
#the application's code
#the volume is currently mounted from the host machine, but the code will be copied over into the image statically for production
app:
image: app
volumes:
- ../../code/cms/storage:/storage
networks:
- backend
#webserver
web:
image: web
depends_on:
- app
- php
networks:
- frontend
- backend
ports:
- '8080:80'
- '8081:443'
#php
php:
image: php:7-fpm
depends_on:
- app
networks:
- backend
networks:
cms-frontend:
driver: "bridge"
cms-backend:
driver: "bridge"
我想到的解决方案都不太合适:
1)在PHP和NGINX容器中使用应用程序容器的卷,但compose v3不允许volumes_from指令。无法使用。
2)将代码放在命名卷中并将其连接到容器。这样做,我无法将代码容器化。无法使用。(我还需要在群集中的每个节点上手动创建此卷吗?)
3)将代码直接复制两次到基于NGINX和PHP-FPM的图像中。这是个坏主意。我必须保持它们保持一致性。
陷入困境了。还有其他选项吗?我可能误解了什么,毕竟才刚开始用Docker。