Help us understand the problem. What is going on with this article?

Docker pull commit push Dockerfile WordPress環境をつくる~Docker Compose~ 新コマンド編

Docker pull commit push Dockerfile WordPress環境をつくる 新コマンド編では、一つのコンテナーにApache、MySQLをインストールする形式でしたが、Docker Composeを利用すると、ApacheとMySQLのコンテナーをそれぞれ作成し、連携することが簡単に行えます。

中小規模のコンテナーシステムにおいて、WEB、APP、DB等の役割に分けてコンテナーを作成する場合に便利なので、WordPressコンテナーとMySQLコンテナーを分けて、連携するDocker Composeの入門をやってみたいと思います。

Docker pull commit push Dockerfile WordPress環境をつくるの続きですので、環境は以下同じです。

環境:VirtualBoxの仮想マシン上にCentOS7を初期インストールまたはパブリッククラウドでCentOS7のインスタンスを準備

Dockerのインストール

1.Dockerのインストール

必要なパッケージのインストール

コマンド
# yum install -y yum-utils device-mapper-persistent-data lvm2

リポジトリの追加

コマンド
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

最新版のDockerをインストール

コマンド
# yum install -y docker-ce

※今回は、最新版のDockerで行いますが、参考までにバージョン指定のインストールも記します。

<参考>
バージョン指定する場合

バージョンの確認

コマンド
# yum list docker-ce --showduplicates | sort -r
 * updates: ftpmirror.your.org
Loading mirror speeds from cached hostfile
Loaded plugins: fastestmirror
Installed Packages
 * extras: mirror.san.fastserv.com
 * epel: mirror.pnl.gov
docker-ce.x86_64            18.06.1.ce-3.el7                   docker-ce-stable 
docker-ce.x86_64            18.06.1.ce-3.el7                   @docker-ce-stable
docker-ce.x86_64            18.06.0.ce-3.el7                   docker-ce-stable 
docker-ce.x86_64            18.03.1.ce-1.el7.centos            docker-ce-stable 
docker-ce.x86_64            18.03.0.ce-1.el7.centos            docker-ce-stable 
docker-ce.x86_64            17.12.1.ce-1.el7.centos            docker-ce-stable 
docker-ce.x86_64            17.12.0.ce-1.el7.centos            docker-ce-stable 
docker-ce.x86_64            17.09.1.ce-1.el7.centos            docker-ce-stable 
docker-ce.x86_64            17.09.0.ce-1.el7.centos            docker-ce-stable 
docker-ce.x86_64            17.06.2.ce-1.el7.centos            docker-ce-stable 
docker-ce.x86_64            17.06.1.ce-1.el7.centos            docker-ce-stable 
docker-ce.x86_64            17.06.0.ce-1.el7.centos            docker-ce-stable 
docker-ce.x86_64            17.03.2.ce-1.el7.centos            docker-ce-stable 
docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable 
docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable 
 * base: mirrors.syringanetworks.net
Available Packages

バージョン指定インストール(例としてdocker-ce-17.06.0.ce-1.el7.centos)

コマンド
# yum install docker-ce-17.06.0.ce-1.el7.centos

2.Dockerの自動起動設定及びサービスの起動

コマンド
# systemctl enable docker.service
# systemctl start docker.service

3.Dockerのバージョンを確認

コマンド
# docker version

4.システム情報の確認

コマンド
# docker info

Docker Composeのインストール

1.Docker Composeのインストール

コマンド
# curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

ダウンロードしたバイナリに対して実行権限を追加します。

コマンド
# chmod +x /usr/local/bin/docker-compose

Docker Composeのバージョンを確認して、インストールができたことを確認してみます。

コマンド
# docker-compose -v
docker-compose version 1.22.0, build f46880fe

docker-compose.ymlファイルの作成

1.docker-compose.ymlファイルの作成

コマンド
# vim docker-compose.yml
ファイル内容は事項参照
:wq
docker-compose.yml
version: '2'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     env_file: .env

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8080:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
     env_file: .env

volumes:
    db_data:
     driver: local

docker-compose.ymlの詳細は、こちら!!

2..envファイルの作成

WordPressとMySQLは公式のイメージを使用します。WordPressとMySQLのDB設定は、.envファイルを作成して、読み込むようにします。

コマンド
# vim .env
ファイル内容は事項参照
:wq
.env
MYSQL_ROOT_PASSWORD=somewordpress
MYSQL_DATABASE=wordpress
MYSQL_USER=wordpress
MYSQL_PASSWORD=wordpress
WORDPRESS_DB_USER=wordpress
WORDPRESS_DB_PASSWORD=wordpress

WordpressコンテナーとMySQLコンテナーの起動

1.WordpressコンテナーとMySQLコンテナーの起動

-dオプションを付けてコンテナーをバックグラウンドでの起動する必要があります。

コマンド
# docker-compose up -d

http://VirtualBoxのIPアドレス:8080/」または「http://パブリッククラウドグローバルIPアドレス:8080/」にアクセスし、WordPressの管理画面が表示されることを確認

2.Volunesの確認

docker-compose.ymlの最終行でdriver:localとすると、ホストLinuxの/var/lib/docker/volumes/以下に「docker volume」コマンドで確認した「volumes名」でディレクトリが作られます。

MySQLのコンテナー内:「/var/lib/mysql」
ホストLinux:「/var/lib/docker/volumes/build_wordpress_db_data/_data」

1.volume名の確認

コマンド
# docker volume ls
DRIVER              VOLUME NAME
local               4a6d8907ab34c9796f837ed39bc8837403a026df79dd72865b2cd7d228b05a86
local               build_wordpress_db_data

2.Linuxホストの以下ディレクトリでtestという空ファイルを作成

コマンド
# touch /var/lib/docker/volumes/build_wordpress_db_data/_data/test
# ls /var/lib/docker/volumes/build_wordpress_db_data/_data/
auto.cnf    ca.pem           client-key.pem  ib_logfile0  ibdata1  mysql               private_key.pem  server-cert.pem  sys   wordpress
ca-key.pem  client-cert.pem  ib_buffer_pool  ib_logfile1  ibtmp1   performance_schema  public_key.pem   server-key.pem   test

3.MySQLのコンテナID確認

コマンド
# docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
574093a3ab15        wordpress:latest    "docker-entrypoint.s…"   27 minutes ago      Up 27 minutes       0.0.0.0:8080->80/tcp   build_wordpress_wordpress_1
f8d4df440dd7        mysql:5.7           "docker-entrypoint.s…"   27 minutes ago      Up 27 minutes       3306/tcp, 33060/tcp    build_wordpress_db_1

4.MySQLコンテナーの中からも確認

コマンド
# docker container exec -it f8d4df440dd7 /bin/bash
root@f8d4df440dd7:/# ls /var/lib/mysql
auto.cnf    client-cert.pem  ib_logfile0  ibtmp1              private_key.pem  server-key.pem  test
ca-key.pem  client-key.pem   ib_logfile1  mysql               public_key.pem   sys             wordpress
ca.pem      ib_buffer_pool   ibdata1      performance_schema  server-cert.pem

5.コンテナーでもtest2という空ファイルを作成して、Linuxホストから確認

コマンド
root@f8d4df440dd7:/# touch /var/lib/mysql/test2
root@f8d4df440dd7:/# ls /var/lib/mysql
auto.cnf    client-cert.pem  ib_logfile0  ibtmp1              private_key.pem  server-key.pem  test2
ca-key.pem  client-key.pem   ib_logfile1  mysql               public_key.pem   sys             wordpress
ca.pem      ib_buffer_pool   ibdata1      performance_schema  server-cert.pem  test
root@f8d4df440dd7:/# exit

6.Linuxホストで確認

コマンド
# ls /var/lib/docker/volumes/build_wordpress_db_data/_data/
auto.cnf    ca.pem           client-key.pem  ib_logfile0  ibdata1  mysql               private_key.pem  server-cert.pem  sys   test2
ca-key.pem  client-cert.pem  ib_buffer_pool  ib_logfile1  ibtmp1   performance_schema  public_key.pem   server-key.pem   test  wordpress

※volumeのディレクトリは、docker-compose down -v, docker-compose rm -vなど-vオプションを指定することによって削除できます。

3.主なdocker-composeコマンド

主なdocker-composeコマンドは以下となります。

コマンド 説明
up コンテナーの生成/起動
down 全てのコンテナーの停止と同時削除
scale 生成するコンテナー数の指定
ps コンテナーの一覧表示
logs コンテナーログの出力
run コンテナーの実行
start コンテナーの起動
stop コンテナーの停止
restart コンテナーの再起動
kill 実行中コンテナーの強制停止
rm コンテナーの削除

docker-composeコマンドの詳細は、こちら!!

参考サイト

ap-com
エーピーコミュニケーションズは「エンジニアから時間を奪うものをなくす」ため、ITインフラ自動化のプロフェッショナルとして、クラウドも含めたインフラ自動化技術で顧客の課題を解決すると同時に、SI業務の課題を解決するプロダクト・サービスを提供するNeoSIer(ネオエスアイヤー)です。
https://www.ap-com.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした