web-dev-qa-db-ja.com

環境変数をdocker-compose upに渡す方法

コンテナを実行しようとしています。私はすでにプライベートDockerレジストリに画像をアップロードしています。イメージをダウンロードしてデプロイするための構成ファイルを作成します。しかし、docker-compose runコマンドから変数としてTAG名を渡したいと思います。私の作成ファイルは以下のようになります。 docker-compose upコマンドの一部としてKB_DB_TAG_VERSIONの値を渡すにはどうすればよいですか?

version: '3'
services:
   db:
    #build: k-db
    user: "1000:50"
    volumes:
      - /data/mysql:/var/lib/mysql
    container_name: k-db
    environment:
      - MYSQL_ALLOW_EMPTY_PASSWORD=yes
    image:  XX:$KB_DB_TAG_VERSION
    image: k-db
    ports:
      - "3307:3306"
24
Abhi.G

次の2つのオプションがあります。

  1. 別の answer で既に提案されているように 。envファイル を作成します。
  2. KEY=VALUEペアをdocker-composeコマンドの前に追加します。例:

    KB_DB_TAG_VERSION=kb-1.3.20-v1.0.0 docker-compose up
    

    スクリプトで以前にエクスポートすることもできます、例えば:

    export KB_DB_TAG_VERSION=kb-1.3.20-v1.0.0
    docker-compose up
    
30
Jakub Kukul

次の内容の.envコマンドを実行するディレクトリ(およびdocker-compose upファイルが配置されているディレクトリ)に docker-compose.ymlファイル を作成できます。

KB_DB_TAG_VERSION=kb-1.3.20-v1.0.0

docker-compose.ymlファイルは次のようになります({および}を追加):

version: '3'
services:
   db:
     user: "1000:50"
     volumes:
       - /data/mysql:/var/lib/mysql
     container_name: k-db
     environment:
       - MYSQL_ALLOW_EMPTY_PASSWORD=yes
     image: XX:${KB_DB_TAG_VERSION}
     image: k-db
     ports:
       - "3307:3306"
6

Docker-compose.ymlファイルに追加します

env_file:
  - .env_file

.env_fileが.envファイルであるdbサービスに変更します(それに応じて名前を変更します)。

version: '3'
services:
   db:
    #build: k-db
    user: "1000:50"
    volumes:
      - /data/mysql:/var/lib/mysql
    container_name: k-db
    env_file:
      - .env_file
    environment:
      - MYSQL_ALLOW_EMPTY_PASSWORD=yes
    image:  XX:$KB_DB_TAG_VERSION
    image: k-db
    ports:
      - "3307:3306"
1
GiacomoLicari