1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Dockerで環境変数を扱う

Posted at

この記事は

指定した環境変数をPythonプログラム上で使用する方法です。

環境変数のおさらい

以下のようなPythonプログラムがあるとします。
単に、環境変数を取得して表示しているだけです。

main.py
import os

value = os.environ["value"]
print(value)

特に何もせずにpython main.pyを実行すると、結果はNoneになります(指定した環境変数が取得できなかった)。これは想定通りです。

$ python main.py
None

環境変数を定義してから再度同じプログラムを実行させます。設定された値が表示されることがわかります。

$ export value=1234
$ python main.py
1234 # 設定した値が表示された!

Dockerで同じことをする

2つの方法があります。

  • ENVに固定値を設定する
  • ARGを設定し、ENVでARGに設定した値を設定する。

順に見ていきます。

ENVに固定値を設定する

以下のようなDockerfileを作成します。この時、ENV=1234として、変数を指定します。これがプログラム上から読み込むことのできる変数です。

FROM python:3.9

COPY . .

ENV value=1234

ENTRYPOINT ["python", "main.py"]

pythonコード(再掲)
main.py
import os

value = os.environ["value"]
print(value)

Dockerfilemain.pyがあるディレクトリで以下のようにDockerのビルドと起動をします。想定通り指定したENVの値が表示されます。

$ docker build -t sample_docker .
$ docker run sample_docker
1234

ARGを設定し、それをENVで読み込む

次に、ARGを設定する方法です。
以下のように、DockerfileにARGで値を設定し、設定したARGをさらにENVに指定しています。
この時、ARG VALUE=defaultは、--build-arg(後述)で値が別に指定されなかった場合のデフォルト値を指定していることを意味しています。

FROM python:3.9

COPY . .

ARG VALUE=default

ENV value=${VALUE}

ENTRYPOINT [ "python", "main.py" ]

この状態で、先ほどと同様にビルドと実行をします。

$ docker build -t sample_docker .
$ docker run sample_docker
default

ARGで設定したdefaultという文字列が出力されるのがわかります。

次に、build-argを用いてARGの値を上書きしてみます。

$ docker build -t sample_docker . --build-arg VALUE=my_value
$ docker run sample_docker
my_value

想定通り、my_valueを表示できました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?