1. ホーム

[解決済み】docker composeで環境変数を使用する方法

2022-03-29 17:34:59

質問

docker-compose.ymlの中で、env変数を使用できるようにしたい。 docker-compose up . これはその例です。

私は今日、基本的なdocker runコマンドでこれをやっていますが、これは私自身のスクリプトに巻きついています。 このようなbashラッパーを使用せずに、composeで実現する方法はありますか?

proxy:
  hostname: $hostname
  volumes:
    - /mnt/data/logs/$hostname:/logs
    - /mnt/data/$hostname:/data

解決方法は?

  1. を作成します。 template.yml で、これはあなたの docker-compose.yml を環境変数で指定します。
  2. 環境変数がファイル 'env.sh' に入っているとします。
  3. 以下のコードをshファイルに記述して実行します。
<ブロッククオート

ソース env.sh; rm -rf docker-compose.yml; envsubst < "template.yml" > "docker-compose.yml";

新しいファイル docker-compose.yml は、環境変数に正しい値を入れて生成されます。

template.ymlファイルのサンプルです。

oracledb:
        image: ${ORACLE_DB_IMAGE}
        privileged: true
        cpuset: "0"
        ports:
                - "${ORACLE_DB_PORT}:${ORACLE_DB_PORT}"
        command: /bin/sh -c "chmod 777 /tmp/start; /tmp/start"
        container_name: ${ORACLE_DB_CONTAINER_NAME}

env.shファイルのサンプルです。

#!/bin/bash 
export ORACLE_DB_IMAGE=<image-name> 
export ORACLE_DB_PORT=<port to be exposed> 
export ORACLE_DB_CONTAINER_NAME=ORACLE_DB_SERVER