【问题标题】:Docker ENV for Python variables用于 Python 变量的 Docker ENV
【发布时间】:2018-09-21 02:21:43
【问题描述】:

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

username = "test"
password = "12345"

我能够创建 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"]`

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

【问题讨论】:

    标签: python docker flask


    【解决方案1】:

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

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

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

    docker run -e MY_USER=test -e MY_PASS=12345 ... <image-name> ...
    

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

    更多关于os.environdocker env的信息

    【讨论】:

    【解决方案2】:

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

     # USERNAME = os.getenv('NAME_OF_ENV_VARIABLE','default_value_if_no_env_var_is_set')
     USERNAME = os.getenv('USERNAME', 'test')
    

    然后您可以创建一个 docker-compose.yml 文件来运行您的 dockerfile:

    version: '2'
    services:
      python-container:
        image: python-image:latest
        environment:
          - USERNAME=test
          - PASSWORD=12345
    

    您将运行撰写文件:

    $ docker-compose up
    

    您需要记住的是构建您在问题中提到的 dockerfile:

    $ docker build -t python-image .
    

    如果有帮助,请告诉我。我希望这能回答你的问题。

    【讨论】:

    • 以纯文本形式写入的敏感数据在 Dockerfile / Docker-compose.yml 中可以吗?
    • 这真的取决于上下文。
    【解决方案3】:

    FROM python:3
    
    MAINTAINER <abc@test.com>
    
    ENV username=test
        password=12345
    
    RUN mkdir /dir/name
    
    RUN cd /dir/name && pip3 install -r requirements.txt
    
    WORKDIR /dir/name
    
    ENTRYPOINT ["/usr/local/bin/python", "./test.py"]

    【讨论】:

    • 每次修改 docker 时,请确保在运行镜像之前运行 build 命令。
    猜你喜欢
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 2021-08-27
    • 2021-05-24
    • 2021-01-03
    • 2021-01-24
    相关资源
    最近更新 更多