Docker ComposeのYAMLサンプル(Windowsで使う例)
昨年(2016年)ぐらいから、windows 環境で docdker-compose が使いやすくなっていて、 ローカルPC用のテスト環境用のサーバを準備するのに使い始めています。
とはいっても、設定ファイルを整合性を維持して書くのは気を使うし、間違うことも多々あります。
今後も、自分メモとして、ひな形として使えるようにgithubにサンプルを作ってみました。 基本方針としては、docker hub に登録されている、Docker公式イメージを中心に使い、 設定情報も最小限にしています。(一部、公式でないものも使っています。)
色々なファイルをコミットしていますが、一番大事なのは、 “docker-compose.yml” 、 “compose_up.sh” です。(この記事を作成した時点では、redis 、tomcat 、 sftpサーバ 、mysql 、openjdk 用バッチサーバ 、を含んでいます。)
事前条件
- Docker Toolbox for Windows がインストール済であること
- 同時に、”VirtualBox” と “Git for Windows” をインストールできるようになっています。必ず両方インストールしておいてください。
yangiYA/docker_compose_sample4win 使用例
- Windowsの %USERPROFILE% ディレクトリ以下に、yangiYA/docker_compose_sample4win を配置してください。 (Github のシェルや、Dokerのターミナルなら “$HOME” 以下のディレクトリに配置してください。)
- “Docker Quickstart Terminal”を起動します。
(“Docker Quickstart Terminal”は[Docker Toolbox for Windows]をインストールすると、スタートメニューや、ショートカットとして登録されています。)
起動すると、”Git for Windows”ベースのターミナルが起動して、また、VirtualBox上にVMが起動します。- 参考: “Docker Quickstart Terminal”を初めて起動する際に、自動的に”default”という名前のVMが作成されます
- yangiYA/docker_compose_sample4win を配置したディレクトリに移動ます。
- “compose_up.sh” を起動して、docker container を実行します。
$ ./compose_up.sh ... (中略) ... Creating java_01 Creating mysql_01 Creating mysftp_01 Creating tomcat_01 Creating myredis_01 **************************************************** CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f6464333f619 redis:3-alpine "docker-entrypoint.sh" 2 seconds ago Up Less than a second 0.0.0.0:16379->6379/tcp myredis_01 63f4236086b9 tomcat:8.5-alpine "catalina.sh run" 2 seconds ago Up Less than a second 0.0.0.0:18080->8080/tcp tomcat_01 eb5b35bb9661 atmoz/sftp:alpine "/entrypoint sftpuser" 2 seconds ago Up Less than a second 0.0.0.0:10022->22/tcp mysftp_01 e1132ad801b4 mysql:5.6 "docker-entrypoint.sh" 2 seconds ago Up Less than a second 0.0.0.0:13306->3306/tcp mysql_01 59996af37e4d openjdk:8-jdk-alpine "tail -f /dev/null" 2 seconds ago Up Less than a second java_01 **************************************************** * IP of Linux VM(for docker containers) 192.168.99.100 **************************************************** $
Dockerコンテはへのアクセス方法
上のログの場合 “192.168.99.100” がVMのIPです。 Dockerコンテナへの接続には、「ローカルPC」=>「VM」=>「各Dockerコンテナ」と経由してアクセスします。
上のログのうち、一番上を例とすると
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f6464333f619 redis:3-alpine "docker-entrypoint.sh" 2 seconds ago Up Less than a second 0.0.0.0:16379->6379/tcp myredis_01
- ローカルPCからは “192.168.99.100:16379” に接続すると、Dockerコンテナのredisサービスに接続できます。
- 他のDockerコンテナから、アクセスする場合は、ネットワーク名”myredis_01″、ポート”6379″ でアクセスできます。
- ネットワーク名が、割り当たっているIPを参照するには、 “docker_network.sh” を実行すると参照できます。