我在Laravel中有一个带有.env.local文件的应用程序(a和我制作了下一个docker-compose文件:
api:
container_name: nadal_api
build:
context: .
dockerfile: Dockerfile
volumes:
- .:/var/www/html/app
ports:
- ${APP_PORT}:80
links:
- db
- redis
和我的码头文件
FROM composer:最新的AS作曲家
FROM node:latest AS node
WORKDIR / var / www / html / app /
来自php:7.2-fpm-stretch
运行apt-get update && apt-get install -y \ supervisor \ nginx \ zip
ADD docker / nginx.conf /etc/nginx/nginx.conf ADD docker / virtualhost.conf /etc/nginx/conf.d/default.conf ADD docker / supervisord.conf /etc/supervisor/conf.d/supervisord.conf
ARG环境
COPY --from = composer / usr / bin / composer / usr / bin / composer
COPY .env.local .env RUN chmod -R g + w / var / www / html / app / bootstrap
RUN作曲家安装RUN php artisan key:generate
EXPOSE 80
CMD [“/ usr / bin / supervisord”]
我想克隆存储库,并在执行docker-compose构建时在dockerfile中执行以下操作:
运行chmod -R g + w / var / www / html / app / bootstrap
chmod:无法访问'/ var / www / html / app / bootstrap':没有这样的文件或目录
在你的Dockerfile
中没有COPY
动作将你当前的所有项目代码复制到创建的图像中。因此,图像中不存在bootstrap文件夹。所以chmod
确切地告诉你。
卷(此行 - 。:/ var / www / html / app)将根据图像结构创建将当前目录与容器同步。因此,如果您想授予bootstrap文件夹的权限,请在授予权限之前将项目代码复制到图像中。在权限操作之前添加此行以使文件夹可访问。
COPY . /var/www/html/app