web-dev-qa-db-ja.com

Python変数のDocker ENV

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変数を作成し、動的な値を渡すにはどうすればよいですか?

16
user2153844

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 に関する詳細情報

30
urban

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 .

それが役立つかどうか私に知らせてください。それがあなたの質問に答えることを願っています。

13
OpenBSDNinja