Docker ENV for Python变量

时间:2018-04-11 09:09:09

标签: python docker flask

刚接触python& docker,我创建了一个小瓶子应用程序(test.py),它有两个硬编码值:

<html>
<head>
        <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">

        <meta charset="UTF-8">
        <meta name="apple-mobile-web-app-capable" content="yes" />
        <meta name="apple-mobile-web-app-status-bar-style" content="black">
        <meta name="format-detection" content="telephone=no, email=no">            
</head>
<body>
    <input id="test" type="text" placeholder="test" />
    <input id="test2" type="text" placeholder="test" />

    <script src="https://cdn.bootcss.com/fastclick/1.0.6/fastclick.js"></script>
    <script>
        window.FastClick.attach(document.body);
        document.getElementById('test').onclick = function(e) {
          // works fine
          e.target.focus();
        };
        document.getElementById('test2').onclick = function(e) {
          // not working
          setTimeout(function() {
            e.target.focus();
          }, 50)
        };
    </script>
</body>
</html>

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

username = "test"
password = "12345"

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

3 个答案:

答案 0 :(得分:15)

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

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

的更多信息

答案 1 :(得分:4)

在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 .

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

答案 2 :(得分:1)

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"]