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:バージョン番号を指定します.
Services:構築するミラー名です.上のdocker-composeです.ymlではMysqldbserverとspringappserverです
container_name:実行中のサービス名です
build:ベースミラーを指定したり、dockerfileを指定したり、dockerfileがあるディレクトリを指定したりできます.
2つのdockerfile、Mysqldb-dockerfile、springapp-dockerfileを指定しました.彼らの内容を見てみましょう.
mysqldb-dockerfile:
ベースミラーを指定し、作成者を指定し、mysql初期化スクリプトファイルをコンテナ内にコピーします.
springapp-dockerfile:
ベースミラーを指定し、ディレクトリをマウントし、作業ディレクトリを指定し、コンテナの起動時に実行するコマンドも指定します.
Environment:環境変数、上のMysqlはrootパスワードと初期化データベースを指定します.これは配列で、'-'で分割されます.
ports:マッピングポート;
Networks:指定したネットワークモードに追加
links:他のサービスのコンテナにリンクし、上のspringbootはmysqlにリンクします.
depends-on:このオプションは起動順序の問題を解決するために使用されます.多くのサービス間に依存関係があり、起動順序があるため、上のファイルについて、mysqlはspringbootプロジェクトより先に起動し、このラベルは起動順序の依存問題を解決します.
command:コンテナの起動後にデフォルトで実行される命令を上書きします.
まず自分の机械の上で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:コンテナの起動後にデフォルトで実行される命令を上書きします.