Docker ENV for Python变量

use*_*844 11 python flask docker

作为python和docker的新手,我创建了一个小烧瓶应用程序(test.py),它有两个硬编码值:

username = "test"
password = "12345"
Run Code Online (Sandbox Code Playgroud)

我能够创建一个Docker镜像并从以下Dockerfile运行一个容器:

FROM python:3.6

RUN mkdir /code  
WORKDIR /code  
ADD . /code/  
RUN pip install -r requirements.txt  

EXPOSE 5000  
CMD ["python", "/code/test.py"]`
Run Code Online (Sandbox Code Playgroud)

如何为用户名和密码创建ENV变量并在运行容器时传递动态值?

urb*_*ban 26

在您的python代码中,您可以读取env变量,如:

import os
username = os.environ['MY_USER']
password = os.environ['MY_PASS']
print("Running with user: %s" % username)
Run Code Online (Sandbox Code Playgroud)

然后,当您运行容器时,您可以设置以下变量:

docker run -e MY_USER=test -e MY_PASS=12345 ... <image-name> ...
Run Code Online (Sandbox Code Playgroud)

这将在容器中设置env变量,稍后将通过python脚本读取这些变量(test.py)

有关os.environdocker env的更多信息


Ope*_*nja 11

在您的Python代码中,您可以执行以下操作:

 # USERNAME = os.getenv('NAME_OF_ENV_VARIABLE','default_value_if_no_env_var_is_set')
 USERNAME = os.getenv('USERNAME', 'test')
Run Code Online (Sandbox Code Playgroud)

然后,您可以创建一个docker-compose.yml文件以使用以下命令运行您的dockerfile:

version: '2'
services:
  python-container:
    image: python-image:latest
    environment:
      - USERNAME=test
      - PASSWORD=12345
Run Code Online (Sandbox Code Playgroud)

您将使用以下命令运行撰写文件:

$ docker-compose up
Run Code Online (Sandbox Code Playgroud)

您需要记住的只是使用以下命令构建您在问题中提到的dockerfile:

$ docker build -t python-image .
Run Code Online (Sandbox Code Playgroud)

让我知道是否有帮助。我希望能回答您的问题。