将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文件中更改它
- 在Google Cloud上部署NodeJS,Puppeteer和Angular
- 为什么Docker容器不能parsing主机上/ etc / hosts中定义的主机?
- Docker 1.7.1:有没有办法在构build镜像时向Dockerfile提供dynamic信息
- 从另一个容器(Docker)连接到postgresql容器
- 当es被安装在不同的端口上时,fluentd无法/显着地连接到elasticsearch
- 如何从多个自定义容器构builddocker镜像
- 如何在Docker容器中设置核心文件大小?
- 多数PostgreSQL数据库在数据只容器
- 如何使用docker-machine和PHPStormdebugging我的Docker容器