質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

972閲覧

Docker Composeで宣言を使いまわしたい

退会済みユーザー

退会済みユーザー

総合スコア0

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2020/07/07 13:53

編集2020/07/07 14:01

前提・実現したいこと

Docker Composeで宣言を使いまわしたいです。

現在同じような宣言をコンテナの数だけ書いています。
その結果冗長になり非常に見づらくなっています。

.env

DNS1=8.8.8.8 DNS2=8.8.4.4 ADMIN_PASSWORD001=password001 ADMIN_PASSWORD002=password002 ADMIN_PASSWORD003=password003

docker-compose.yml

version: '3' services: server001: env_file: - .env build: context: . dockerfile: Dockerfile restart: always dns: - ${DNS1} - ${DNS2} cap_add: - NET_ADMIN container_name: server001 ports: - 1000:1000 environment: ADMIN_PASSWORD: ${ADMIN_PASSWORD001} server002: env_file: - .env build: context: . dockerfile: Dockerfile restart: always dns: - ${DNS1} - ${DNS2} cap_add: - NET_ADMIN container_name: server002 ports: - 1001:1000 environment: ADMIN_PASSWORD: ${ADMIN_PASSWORD002} server003: env_file: - .env build: context: . dockerfile: Dockerfile restart: always dns: - ${DNS1} - ${DNS2} cap_add: - NET_ADMIN container_name: server003 ports: - 1002:1000 environment: ADMIN_PASSWORD: ${ADMIN_PASSWORD003}

例えばcommon: common_dataこのように共通データの指定が出来ればシンプルになり可読性やメンテナンス性が上がると考えています。

なにか良い書き方はありませんでしょうか?

docker-compose.yml

version: '3' services: common_data: env_file: - .env build: context: . dockerfile: Dockerfile restart: always dns: - ${DNS1} - ${DNS2} cap_add: - NET_ADMIN server001: common: common_data container_name: server001 ports: - 1000:1000 environment: ADMIN_PASSWORD: ${ADMIN_PASSWORD001} server002: common: common_data container_name: server002 ports: - 1001:1000 environment: ADMIN_PASSWORD: ${ADMIN_PASSWORD002} server003: common: common_data container_name: server003 ports: - 1002:1000 environment: ADMIN_PASSWORD: ${ADMIN_PASSWORD003}

補足情報(FW/ツールのバージョンなど)

  • Docker desktop (Windows) 2.3.0.3(45519) stable

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Compose file version 2 では extends という記法があるようです
Share Compose configurations between files and projects | Docker Documentation

Compose file version 3 では、全く同様の機能はサポートされていないようです

今回のようなケースに対応するために version 2 を使い続けたり、
YAML をスクリプトで生成して
docker-compose up コマンドの引数に渡したりしている方もいるようです
Add support for extends feature in Compose v3 / docker stack deploy · Issue #31101 · moby/moby

投稿2020/07/07 14:01

編集2020/07/07 14:35
y_shinoda

総合スコア3272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_shinoda

2020/07/07 14:02

version 3 ではサポートされていませんね・・もう少し調べてみます
y_shinoda

2020/07/07 14:36

わかる範囲のことを記載して更新しました
退会済みユーザー

退会済みユーザー

2020/07/07 15:34

ありがとうございます。 version3での対応はまだ議論中のようですね。 今回はversion2でも問題なさそうなのでversion2以下で利用できるextendsを利用してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問