将Laravel的.env文件复制到Docker容器中

build立

我在我的Ubuntu服务器上运行Docker,我正在尝试创build一个Laravel容器来与工匠一起运行我的网站。 Laravel项目位于GitHub存储库中,我使用dockerfile将项目克隆到Docker容器。

问题

出于安全原因,Laravel项目依赖于不包括在回购项目中的.env (环境文件)。 所以,当我克隆回购docker容器它不包括.env文件,从而不能正常运行的网站。 我有一个.env文件在我的Ubuntu本地,我试图COPY到docker容器Laravel项目文件夹,当然这是行不通的。 这是因为它正在查找泊坞窗容器的文件结构中的目录。

错误

 Step 6/11 : COPY /containers/.env .env lstat containers/.env: no such file or directory 

如何使用COPY命令将.env文件从ubuntu服务器复制到docker容器?

文件结构(Ubuntu)来源:

 root/ containers/ - docker-compose - .env 

文件结构(docker容器)源码:

 root/ var/www/ 

dockerfile

 FROM hitalos/laravel RUN git config --system http.sslverify false RUN git clone repo /var/www RUN git checkout test COPY /containers/.env .env # Run Compser Install RUN composer install -d /var/www RUN php /var/www/artisan key:generate WORKDIR /var/www CMD php /var/www/artisan serve --port=80 --host=0.0.0.0 EXPOSE 80 

简单地复制.env文件不会起作用,因为您还必须在文件上运行source命令,然后使用export命令将每个环境variables添加到path中。

由于您使用的是docker-compose,因此您可以像在docker-compose.yml中一样使用env_file:

env_file: -.env

这应该自动设置您的.env文件中的Laravel所需的值,当你build立你的conainer。

COPY的path与Dockerfile

只需将其更改为COPY containers/.env /var/www/.env

编辑:似乎你没有build立时的.env文件(图像),只在运行时(容器)。 这意味着,您在运行容器时必须安装该文件。

从Dockerfile中删除COPY ...命令,并改为运行容器

-v /containers/.env:/var/www/.env

所以像这样的东西:

docker run... -v /containers/.env:/var/www/.env ...

或者在撰写yml文件中更改它