22
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

docker-compose on CentOS7構築手順

Last updated at Posted at 2016-11-07

概要

CentOS7上にdocker-composeの実行環境を作ってみたメモ。
db,web,web2の3つのコンテナを作成し、web2コンテナからdbコンテナへリンクさせます。

関連記事

この記事の内容に、リバースプロキシとロードバランシングの機能を加えたものは下記。
docker-compose + リバースプロキシ + ロードバランシングの環境構築手順メモ

環境

  • CentOS 7.1
  • docker-engine (Docker 1.12.3)
  • docker-compose 1.8.1

docker-engine, docker-composeのインストール

下記を参照
docker(docker-engine), docker-composeのインストール

docker-compose.ymlの作成

作成したいコンテナの情報をdocker-compose.ymlに記述します。
今回は、db,web,web2の3つのコンテナを作成します。
役割は下記の通りです。

コンテナ名 役割 リンク先 イメージ元
db dbサーバ - 既存のmysql:latest
web webサーバ - 既存のnginx:latest
web2 webサーバ db 自作のDockerfileをbuild

今回は、各種ファイルをホームディレクトリの直下に作成していますが、他の場所でも構いません。
ディレクトリ構成は適宜変更してください。

docker-compose.yml

docker-compose.ymlを作成

$ vi ~/docker-compose.yml
~/docker-compose.yml
db:
    image: mysql:latest
    environment:
        MYSQL_DATABASE: sample_db
        MYSQL_USER: sample
        MYSQL_PASSWORD: sample_password
        MYSQL_ROOT_PASSWORD: sample_root_password
web:
    image: nginx:latest
    # パスをボリュームとしてマウント {ホスト側:コンテナ側}
    volumes:
        - ./nginx:/usr/share/nginx/html
    ports:
        - 8080:80

web2:
    build: ./web
    # リンク先コンテナ {コンテナ名:エイリアス名}
    links:
        - db:db-server
    ports:
        - 8081:80

「web」コンテナに設置するファイルの作成

index.htmlの作成

$ mkdir ~/nginx
$ vi ~/nginx/index.html
~/nginx/index.html
Hello, docker-compose from index.html:8080.

「web2」コンテナ用のDockerfile、設置するファイルの作成

Dockerfileの作成

$ mkdir ~/web
$ vi ~/web/Dockerfile
~/web/Dockerfile
FROM centos:7
MAINTAINER Iam <xxxx@xxxx.xx>
RUN yum install -y http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
RUN yum install -y nginx
RUN yum install -y http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
RUN yum install -y mysql-community-client
ADD index.html /usr/share/nginx/html/
ADD sample.html /usr/share/nginx/html
ENTRYPOINT /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf

Dockerfileの内容を変更した場合はリビルドが必要

index.htmlの作成

$ vi ~/web/index.html
~/web/index.html
Hello, docker-compose from index.html:8081.

sample.htmlの作成

$ vi ~/web/sample.html
~/web/sample.html
Hello, docker-compose from sample.html:8081.

コンテナの起動

docker-compose.ymlに書かれたコンテナを起動する

$ docker-compose up -d

ビルドもする場合

$ docker-compose up -d --build

動作確認

webページの表示確認

それぞれhtmlの内容が取得できるか確認

$ curl localhost:8080
Hello, docker-compose from index.html:8080.

$ curl localhost:8081
Hello, docker-compose from index.html:8081.

$ curl localhost:8081/sample.html
Hello, docker-compose from sample.html:8081.

dbコンテナとリンクしているか確認

web2

今回dbコンテナにリンクさせたweb2コンテナに入り、mysqlコマンドでdbコンテナに接続できるか確認。

web2コンテナに入る

$ docker exec -it {web2のコンテナID} bash

envコマンドで、dbコンテナへの接続情報を取得

# env | grep DB_SERVER_PORT_3306_TCP_ADDR
DB_SERVER_PORT_3306_TCP_ADDR=172.17.0.2

mysqlコマンドで、dbコンテナへ接続

# mysql -u sample -p -h $DB_SERVER_PORT_3306_TCP_ADDR sample_db
Enter password: sample_passowrd

コンテナの停止と削除

コンテナの停止、また停止したコンテナの削除を行う

$ docker-compose down

以上

[参考]
そろそろDockerを始めないとやばいと思い始めたあなたへ
Docker Compose - docker-compose.yml リファレンス
docs.docker.com

22
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?