刚接触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变量?密码并在运行容器时传递动态值?
答案 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
)读取这些变量
答案 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"]