![](/img/trans.png)
[英]How do I make a react app in docker-compose? Container is exiting after build steps are complete
[英]Create React App Build and Docker-Compose do not pass env variables
我目前正在嘗試進行CRA應用程序的多步驟構建。 我的dockerfile如下
FROM node:10-alpine
WORKDIR /usr/app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
FROM nginx:1.15
COPY --from=0 /usr/app/nginx/default.conf /etc/nginx/conf.d/default.conf
COPY --from=0 /usr/app/build /usr/share/nginx/html
EXPOSE 6000
我的react部分的docker撰寫文件如下
web_front:
build:
context: Web Front-CRA
ports:
- "${WEB_FRONT_PORT}:6000"
env_file:
- .env
volumes:
- /usr/app/node_modules
- ./Web Front-CRA:/usr/app
當我嘗試使用docker-compose up --build
運行此程序時,我無法讀取NODE_PATH=./src/
環境文件(實際上所有環境變量都在RUN npm run build
階段。
但是,如果我只是像下面那樣更改dockerfile來運行dev環境,它就可以完美運行-所有的env文件都可以通過
FROM node:10-alpine
# work directory
WORKDIR /usr/app
# Copy dependencies first for effective caching
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 6000
CMD ["npm", "run", "start"]
我目前正在使用ubuntu 18和docker-compose v1.23.2和Docker 18.09.0。 我究竟做錯了什么?
.env
文件是.env
-compose的一個特殊的名稱保留文件,用於設置環境變量的默認值,因此,如果要使用它,則不應該在撰寫文件中指定,也不要使用其他文件名(例如: myservice.env
)作為env_file
部分。
web_front:
env_file:
- webfront.env
...
docker文檔在https://docs.docker.com/compose/env-file/下的Compose file and CLI variables / Notes部分模糊地提到了這一點
.env文件中定義的環境變量在容器內部不會自動顯示。
要設置容器適用的環境變量,請遵循Compose中的環境變量主題中的指南,該指南描述了如何將Shell環境變量傳遞給容器,如何在Compose文件中定義環境變量,以及更多信息:
為了將環境變量從docker compose構建階段傳遞到dockerfile,必須在docker -compose build step中使用args :。 下面的例子
web_front:
build:
context: Web Front-CRA
args:
NODE_PATH=./src/
ports:
- "${WEB_FRONT_PORT}:6000"
env_file:
- .env
volumes:
- /usr/app/node_modules
- ./Web Front-CRA:/usr/app
對應的dockerfile
FROM node:10-alpine
ARG NODE_PATH
WORKDIR /usr/app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
FROM nginx:1.15
COPY --from=0 /usr/app/nginx/default.conf /etc/nginx/conf.d/default.conf
COPY --from=0 /usr/app/build /usr/share/nginx/html
EXPOSE 6000
使用$NODE_PATH
在dockerfile中訪問它。 PS我在這里使用環境變量,而不是envfile。 但我希望你明白這一點。 干杯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.