python&dockerの初心者なので、ハードコードされた2つの値を持つ小さなflask app(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コード内で、次のような環境変数を読み取ることができます。
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.environ および docker env に関する詳細情報
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 .
それが役立つかどうか私に知らせてください。それがあなたの質問に答えることを願っています。