私は使用していますdocker-compose開発環境を作成します。特定のイメージをビルドしたいのですが、そのイメージに名前を付ける方法がわかりません。
wildfly:
build: /path/to/dir/Dockerfile
container_name: wildfly_server
ports:
- 9990:9990
- 80:8080
environment:
- MYSQL_HOST=mysql_server
- MONGO_HOST=mongo_server
- ELASTIC_HOST=elasticsearch_server
volumes:
- /Volumes/CaseSensitive/development/wildfly/deployments/:/opt/jboss/wildfly/standalone/deployments/
links:
- mysql:mysql_server
- mongo:mongo_server
- elasticsearch:elasticsearch_server
実行するとdocker-compose
すべて正常ですが、新しいイメージにランダムな名前が付けられます。ビルド イメージに名前を設定することは可能ですか?
ベストアンサー1
docker-compose バージョン 2 ファイル形式の場合、1 つのサービスのイメージをビルドしてタグ付けし、その同じビルド済みイメージを別のサービスに使用できます。
私の場合、2 つのノードを持つ elasticsearch クラスターをセットアップし、両方とも同じイメージを使用する必要がありますが、異なる方法で実行するように構成します。また、独自の Dockerfile から独自のカスタム elasticsearch イメージを構築したいと考えています。そこで、次の操作を実行しました ( docker-compose.yml
):
version: '2'
services:
es-master:
build: ./elasticsearch
image: porter/elasticsearch
ports:
- "9200:9200"
container_name: es_master
es-node:
image: porter/elasticsearch
depends_on:
- es-master
ports:
- "9200"
command: elasticsearch --discovery.zen.ping.unicast.hosts=es_master
es-master
最初のサービス定義 では、build
オプションを使用して の Dockerfile からイメージをビルドしていることがわかります。 オプションを使用して、イメージに./elasticsearch
名前のタグを付けます。次に、 オプションを使用して、このビルドされたイメージをサービス定義で参照し、 を使用して他のコンテナーが最初にビルドされて実行されるようにします。porter/elasticsearch
image
es-node
image
depends_on
es-master
名前の設定スケーリングを制限する。