Reactjs 在dockerfile中传递环境变量
我需要在Dockerfile中传递环境变量,如下所示。我可以知道做这件事的有效方法吗。我尝试使用构建参数Reactjs 在dockerfile中传递环境变量,reactjs,docker,dockerfile,devops,Reactjs,Docker,Dockerfile,Devops,我需要在Dockerfile中传递环境变量,如下所示。我可以知道做这件事的有效方法吗。我尝试使用构建参数 docker build --build-arg myIP=123 --rm -t react_2811_1154 . 但它不起作用 这是我的文件 ARG myIP FROM node:11 ENV myIP1 $myIP ENV REACT_APP_MOCK_API_URL=http://${myIP1}:8080/API ENV REACT_APP_MOCK_API_URL_A
docker build --build-arg myIP=123 --rm -t react_2811_1154 .
但它不起作用
这是我的文件
ARG myIP
FROM node:11
ENV myIP1 $myIP
ENV REACT_APP_MOCK_API_URL=http://${myIP1}:8080/API
ENV REACT_APP_MOCK_API_URL_AUTH=http://${myIP1}:8080/API/AUTH
ENV REACT_APP_MOCK_API_URL_PRESENTATION=http://${myIP1}:8080/API/PRESENTATION
# set working directory
RUN mkdir /usr/src/app/
WORKDIR /usr/src/app/
COPY . /usr/src/app/.
RUN npm install
#RUN npm start
CMD ["npm", "start" ]
因此,当我运行docker容器时,我相信我不想向它发送任何环境变量
请告知 我运行了您的Dockerfile,当我在容器内部运行
env
时,myIP
确实是空的
要解决此问题,请尝试将ARG
行放在FROM
行之后
所以
使用此Dockerfile构建时,我可以设置
myIP
我运行了您的Dockerfile,当我在容器内部运行env
时,myIP
确实是空的
要解决此问题,请尝试将ARG
行放在FROM
行之后
所以
使用此Dockerfile构建,我可以设置
myIP
我不清楚您的问题。是否要尝试将环境传递给docker容器,但不知道如何在容器中使用此值?Dockerfile没有问题为了澄清Truong所说的:是环境变量没有在容器中设置,还是npm无法提取变量?请您通过运行echo$memory进行检查,IP地址和主机名可以更改,即使在同一组织中的dev/test/prod环境之间也是如此。这不是您希望“烘焙”到Docker映像并在运行时将其作为环境变量传递的详细信息。请检查此问题,请参阅ARG上的范围:我不清楚您的问题。是否要尝试将环境传递给docker容器,但不知道如何在容器中使用此值?Dockerfile没有问题为了澄清Truong所说的:是环境变量没有在容器中设置,还是npm无法提取变量?请您通过运行echo$memory进行检查,IP地址和主机名可以更改,即使在同一组织中的dev/test/prod环境之间也是如此。这不是您希望“烘焙”到Docker映像并在运行时将其作为环境变量传递的详细信息。请检查此问题,请参阅ARG上的范围:ARG具有范围。在FROM行之前,参数仅适用于FROM行。在Dockerfile的其他部分中,ARG应用于从定义位置到阶段末尾(或单个阶段文件中的Dockerfile)。非常感谢大家。你们真是帮了大忙。ARG有范围。在FROM行之前,参数仅适用于FROM行。在Dockerfile的其他部分中,ARG应用于从定义位置到阶段末尾(或单个阶段文件中的Dockerfile)。非常感谢大家。你们真是帮了大忙。
FROM node:11
ARG myIP
ENV myIP1 $myIP
ENV REACT_APP_MOCK_API_URL=http://${myIP1}:8080/API
ENV REACT_APP_MOCK_API_URL_AUTH=http://${myIP1}:8080/API/AUTH
ENV REACT_APP_MOCK_API_URL_PRESENTATION=http://${myIP1}:8080/API/PRESENTATION