Docker-composeの理解

2898 ワード

Docker-composeはdockerのサービス編成ツールで、主に複数のサービスを構築するために使用され、一般的にはSpingbootプロジェクトを導入するなど、複数の関連サービスを構築するために構築されます.一般的にはリレーショナル・データベースが必要で、redisなどのNOSQLが必要になる可能性があります.dockerfileを利用して構築する場合は、3つのdockerfileを作成し、ミラーを構築し、コンテナを実行する必要があります.しかしdocker-composeを用いる、この3つのサービスを1つのdocker-composeに含めることができる.ymlファイルでは、最後にコマンド:docker-compose upコマンドを使用すると、完全なサービスシステムを構築できます.
まず自分の机械の上でdocker-composeツールをインストールして、インストールの教程のネット上で一大を探して、ここで详しく言いません;作者も覚えられないからだ.
docker-composeをインストールしたら、docker-composeファイルを書くことができます.次に、springbootプロジェクトとmysqlサービスを含むスレ主が最近書いたものを貼ります.
version : '2'
services:
  mysqldbserver:
    container_name: mysqldbserver
    build:
      context: .
      dockerfile: mysqldb-dockerfile
    environment:
      - "MYSQL_ROOT_PASSWORD=root"
      - "MYSQL_DATABASE=testdb"
      - "MYSQL_ROOT_HOST=%"
    ports:
      - "3307:3307"
    networks:
      - net-spring-db
    command: [
          'mysqld',
          '--innodb-buffer-pool-size=20M',
          '--character-set-server=utf8',
          '--collation-server=utf8_general_ci',
          '--default-time-zone=+8:00',
          '--lower-case-table-names=1'
        ]
  springappserver:
    container_name: springappserver
    build:
      context: .
      dockerfile: springapp-dockerfile
    ports:
      - "8080:8080"
    networks:
      - net-spring-db
    volumes:
      - /vol/development
    depends_on:
      - mysqldbserver
    links:
      - mysqldbserver

networks:
  net-spring-db:
    driver: bridge

version:バージョン番号を指定します.
Services:構築するミラー名です.上のdocker-composeです.ymlではMysqldbserverとspringappserverです
container_name:実行中のサービス名です
build:ベースミラーを指定したり、dockerfileを指定したり、dockerfileがあるディレクトリを指定したりできます.
2つのdockerfile、Mysqldb-dockerfile、springapp-dockerfileを指定しました.彼らの内容を見てみましょう.
mysqldb-dockerfile:
FROM mysql:5.7.17

MAINTAINER xxx [email protected]

ADD init.sql /docker-entrypoint-initdb.d/

ベースミラーを指定し、作成者を指定し、mysql初期化スクリプトファイルをコンテナ内にコピーします.
springapp-dockerfile:
FROM java:8-jre

MAINTAINER qiuhao [email protected]

VOLUME /vol/development

RUN mkdir -p /vol/development

WORKDIR /vol/development

COPY build/libs/*.jar /vol/development/app.jar

CMD ["java", "-Xmx200m", "-Djava.security.egd=file:/dev/./urandom","-jar","/vol/development/app.jar"]

ベースミラーを指定し、ディレクトリをマウントし、作業ディレクトリを指定し、コンテナの起動時に実行するコマンドも指定します.
 
Environment:環境変数、上のMysqlはrootパスワードと初期化データベースを指定します.これは配列で、'-'で分割されます.
ports:マッピングポート;
Networks:指定したネットワークモードに追加
links:他のサービスのコンテナにリンクし、上のspringbootはmysqlにリンクします.
depends-on:このオプションは起動順序の問題を解決するために使用されます.多くのサービス間に依存関係があり、起動順序があるため、上のファイルについて、mysqlはspringbootプロジェクトより先に起動し、このラベルは起動順序の依存問題を解決します.
command:コンテナの起動後にデフォルトで実行される命令を上書きします.