というわけで自分でもまだ曖昧な点が多いですがDockerのコンテナ間通信について調べてみました。 方法はいろいろあり、 1. Dockerネットワークを使用したコンテナ間通信 2. –linkオプションを用いたコンテナ間通信 などがあり、まだまだたくさんあるみたいです。
今回は2番の –linkオプションについて調べてみました。 例えばWordpressコンテナとmysqlでコンテナ間通信をする際、 コンテナを作成するときに–linkオプションを以下のように利用します
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:5.7 docker run --name some-wordpress -e WORDPRESS_DB_PASSWORD=my-secret-pw --link some-mysql:mysql -d -p 8080:80 wordpress
接続先のコンテナ名(some-mysql)と、WordPressコンテナ内で使用しているMySQLのホスト名(mysql) を指定しています。
これをdocker composeを用いて同じように通信してみます。
Docker Composeとは
複数のコンテナで構成されるアプリケーションについて、Dockerイメージのビルドや各コンテナの起動・停止などをより簡単に行えるようにするツール..
docker composeではコンテナを起動するためにdocker-compose.ymlというファイルが必要になります。 先ほどの例と同じようにWordpressコンテナとMysqlコンテナで構成されたコンテナを起動するためには docker composeに以下のように記述します。
version: '3' services: wordpress: image: wordpress container_name: some-wordpress restart: always ports: - 8080:80 environment: WORDPRESS_DB_PASSWORD: my-secret-pw mysql: image: mysql:5.7 container_name: some-mysql restart: always environment: MYSQL_ROOT_PASSWORD: my-secret-pw
version2以上ではこの状態で起動することで同じネットワーク内で構成されるため linkオプションを利用する必要はないです。(おそらく)
docker compose.ymlが置かれているディレクトリで
docker-compose up -d
と実行することでバックグラウンドでコンテナを起動します。
また
docker-compose ps
とすることでコンテナの起動状態が確認できます。