我很难理解码头构图中的环境变量。似乎可以在这样的容器中设置env变量:https://docs.docker.com/compose/environment-variables/#set-environment-variables-in-containers
但是,当我尝试时,我只能在docker文件中设置env,而不能设置复合文件。我想在撰写文件中设置它,因为很多示例在撰写文件中显示env (就像docker桌面中的教程)。而且,虽然它适用于docker桌面教程中的节点示例,但对于我为python提出的最简单的示例,它不起作用。
撰写文件..。
version: "3.8"
services:
python-test:
container_name: mypython-contianer
build:
context: ./
dockerfile: SimpleDockerfile
environment:
- SHAPE=SQUARE
env_file: docker.env码头文件"SimpleDockerfile“
FROM python:3.8
WORKDIR /app
COPY . .
ENV FONT=SERIF
RUN python main.pyPython文件
import os
import sys
from pprint import pprint
if __name__ == '__main__':
pprint(dict(os.environ))
sys.exit(1)当我跑的时候
docker-compose up --build --abort-on-container-exit 我得到以下输出
> [4/4] RUN python main.py:
#9 0.755 {'FONT': 'SERIF',
...OTHER STUFF...
#9 0.755 'HOME': '/root',
#9 0.755 'LANG': 'C.UTF-8',
#9 0.755 'PYTHON_PIP_VERSION': '22.0.4',
#9 0.755 'PYTHON_SETUPTOOLS_VERSION': '57.5.0',
#9 0.755 'PYTHON_VERSION': '3.8.13'}为什么字体变量会出现而不是SHAPE?
发布于 2022-05-08 23:36:43
深入研究https://docs.docker.com/compose/compose-file/compose-file-v3/#environment的文档
Note
If your service specifies a build option, variables defined in
environment are not automatically visible during the build.
Use the args sub-option of build to define build-time environment variables.我认为问题dockerfile中的run命令是构建的一部分,而不是运行的一部分。将dockerfile改为..。
FROM python:3.8
WORKDIR /app
COPY . .
ENV FONT=SERIF
CMD ["python", "main.py"]我得到以下输出..。
Recreating mypython-contianer ... done
Attaching to mypython-contianer
mypython-contianer | {'FONT': 'SERIF',
...MORE STUFF...
mypython-contianer | 'SHAPE': 'SQUARE'}
mypython-contianer exited with code 1https://stackoverflow.com/questions/72165281
复制相似问题