2017-07-08 82 views
0

設置複製Laravel的.ENV文件到一個碼頭工人容器

我我的Ubuntu服務器上運行的泊塢窗,我試圖創建一個Laravel容器與工匠運行自己的網站。 Laravel項目位於GitHub存儲庫中,我使用dockerfile將項目克隆到Docker容器。

問題

Laravel項目依賴於.env(環境文件),這不包括在回購項目,出於安全原因。所以當我將repo克隆到docker容器時,它不包含.env文件,因此不能正確運行網站。我有一個.env文件在我的Ubuntu上,我試圖COPY到Docker容器Laravel項目文件夾,當然它不起作用。這是因爲它正在尋找泊塢窗容器文件結構中的目錄。

錯誤

Step 6/11 : COPY /containers/.env .env 

lstat containers/.env: no such file or directory 

問題

我怎樣才能從Ubuntu服務器複製.ENV文件泊塢窗容器與COPY命令?

文件結構(Ubuntu的)源自:

root/ 
    containers/ 
    - docker-compose 
    - .env 

文件結構(搬運工容器)源:

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 
+0

爲什麼你不在主機上籤出回購,沒有必要在圖像/容器中有回購,也可以複製它 – bartimar

回答

1

COPY的路徑相對於Dockerfile

只是將其更改爲COPY containers/.env /var/www/.env

編輯: 好像你沒有.env文件在生成時(圖像),只有在運行時(容器)。這意味着,您在運行容器時必須安裝該文件。

從Dockerfile取出COPY ...命令,而是與

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

所以像這樣運行容器:

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

或改變它在撰寫YML文件

+0

沒有工作仍然得到:lstat containers/.env:沒有這樣的文件或目錄 – melkawakibi

+0

我想我需要遠程訪問Ubuntu服務器以某種方式訪問​​目錄容器。 – melkawakibi

+0

等一下。您正在本地構建映像,但在無法訪問的ubuntu服務器上運行容器? – bartimar

1

從喲開始,只需複製.env文件就不會起作用您還必須在該文件上運行source命令,然後使用export命令將每個環境變量添加到您的路徑。

由於您使用的是docker-compose,因此您可以在docker-compose中使用env_file。陽明:

env_file: -.env

這應該從你的.ENV文件,當你建立你的conainer自動設置由Laravel所需的值。

+0

謝謝你的回答,我會試試看。 – melkawakibi

相關問題