在laravel中自动化项目

时间:2019-04-26 12:40:08

标签: docker docker-compose dockerfile

我在Laravel中有一个带有.env.local文件的应用程序(一个,我制作了下一个docker-compose文件:

api:
container_name: nadal_api
build:
  context: .
  dockerfile: Dockerfile
volumes:
  - .:/var/www/html/app
ports:
  - ${APP_PORT}:80
links:
  - db
  - redis

和我的docker文件

  

FROM作曲家:最新的AS作曲家

     

FROM节点:最新的AS节点

     

WORKDIR / var / www / html / app /

     

从php:7.2-fpm-stretch

     

运行apt-get更新&& apt-get安装-y \       主管       nginx \       邮编

     

添加docker / nginx.conf /etc/nginx/nginx.conf添加   docker / virtualhost.conf /etc/nginx/conf.d/default.conf添加   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

     

运行作曲家安装运行php工匠密钥:生成

     

80号博览会

     

CMD [“ / usr / bin / supervisord”]

我想克隆存储库,并在执行docker-compose构建时在dockerfile中执行以下操作:

  1. 将.env.local重命名为.env
  2. 授予存储文件夹权限。我在此行中有一个错误
  

运行chmod -R g + w / var / www / html / app / bootstrap

     

chmod:无法访问“ / var / www / html / app / bootstrap”:没有此类文件或   目录

  1. docker-compose.yaml:$ {APP_PORT}从.env.local获取值(我尝试使用env_file,但它不起作用

1 个答案:

答案 0 :(得分:1)

在您的Dockerfile中,没有COPY动作可将您当前的所有项目代码复制到创建的图像中。因此,引导文件夹在您的映像中不存在。因此chmod可以准确地告诉您。

音量(此行-。:/ var / www / html / app)将在以后根据图像结构创建当前目录时与容器同步。因此,如果要授予引导文件夹的权限,则在授予权限之前将项目代码复制到映像中。 在权限操作之前添加此行,以使文件夹可访问。

COPY . /var/www/html/app