version: '2'
networks:
default:
driver: bridge
services:
yii2-app:
build:
context: .
dockerfile: ./Dockerfile-app
ports:
- "80:80"
networks:
- default
depends_on:
- yii2-db
volumes:
- "./app:/var/www/app"
- "./nginx:/etc/nginx/sites-available"
...
FROM richarvey/nginx-php-fpm
ADD app /var/www/app
RUN rm -Rf /etc/nginx/sites-enabled/*
ADD nginx/site.conf /etc/nginx/sites-available/site.conf
RUN ln -s /etc/nginx/sites-available/site.conf /etc/nginx/sites-enabled/site.conf
RUN cd /var/www/app && \
composer install
RUN cd /var/www/app && chmod +x yii && \
cd web && mkdir -p uploads && \
cd /var/www && chown nginx:nginx -R app/
我的最后一个命令RUN无效:chown不会设置nginx文件的所有者。也不会创建文件夹“上载”。
当我运行
docker-compose build --no-cache
时,该步骤已通过:Step 7/7 : RUN cd /var/www/app && chmod +x yii && cd web && mkdir -p uploads && cd /var/www && chown nginx:nginx -R app/
---> Running in 26a918bece47
Removing intermediate container 26a918bece47
---> 00db026a461c
Successfully built 00db026a461c
Successfully tagged passport-app_yii2-app:latest
但是,当我运行使用
docker-compose up -d
以“常见”方式进行的工作负载未应用更改。为什么我的上一个RUN命令不起作用?
#1 楼
我找到了问题的原因。在Docker中,“ Dockerfile中VOLUME指令之后的任何内容都将无法对该卷进行更改”。
我定义了卷“ ./app:/var/www/app”,然后对其进行操作,因此它不起作用。
#2 楼
生成映像时,您的mkdir和chown命令处于RUN状态,然后从VOLUME挂载/var/www/app
,因此您要用外部./app
的内容替换创建和chown的文件夹(因此,好像chown无法正常工作)。如果要在装入卷之后对它的内容进行整理,则应将这些指令放在称为CMD的脚本上。
评论
我认为您可以尝试通过逐个执行它们来调试这些语句,看看是否存在问题。@ profesor79似乎在Docker中我无法在/ var / www / app中创建文件(文件夹,制作文件),因为它的体积很大。