Day-to-day the memorandum

やったことのメモ書きです。

Docker Composeをやってみた。

Docker Composeを使ってLAMP環境を作ったので自分用のメモ

はじめに

実行時のdockerのバージョンは以下です。

$ docker --version
Docker version 1.13.1, build 092cba3

docker-composeのバージョンは以下です。

$ docker-compose --version
docker-compose version 1.11.1, build 7c5d5e4

Dockerのインストール

下記サイトからOS別のインストール手順をみて順番に実行していく。
https://docs.docker.com/engine/installation/

Docker Composeのインストール

下記サイトからインストール手順をみて順番に実行していく。
https://docs.docker.com/compose/install/

フォルダ構成

docker
   ├─ docker-compose.yml

docker-compose.ymlの作成

Docker Composeを使うためにはdocker-compose.ymlを作成します。
今回は、使うイメージをDocker Hubから全部落としてきて使うことにします。

version: '3.0'
services:
  web:
    image: php:apache
    ports: 
      - 80:80
    links:
      - db
    volumes:
      - "../html:/var/www/html"
  db:
    image: mysql:latest
    environment:
      - MYSQL_ROOT_PASSWORD=root
    volumes:
      - "../mysql:/var/lib/mysql"
  phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    links:
      - db
    ports:
      - 8080:80
    environment:
    - PMA_ARBITRARY=1
    - PMA_HOST=db
    - PMA_USER=root
    - PMA_PASSWORD=root
    volumes:
      - "../phpmyamin/session:/session"

パラメータなどはそれぞれのDocker Hubのページに書いてある通りに設定していく。
ApachePHPのイメージ
https://hub.docker.com/_/php/
MySQLのイメージ
https://hub.docker.com/_/mysql/
PhpMyAdminのイメージ
https://hub.docker.com/r/phpmyadmin/phpmyadmin/

コンテナの作成

docker-compose.ymlがあるディレクトリで下記コマンドを実行

$ docker-compose up -d

アクセス

Apacheのページ
http://localhost
PhpMyAdminのページ
http://localhost:8080

おまけ

Vagrantを使って全自動で立ち上げる。

フォルダ構成

project
    ├─ docker
    |   ├─ docker-compose.yml
    |
    ├─ html
    |   ├─ index.php
    |
    ├─ vagrant
         ├─ Vagrantfile

Vagrantのprovisionでdocker-composeを使うのにはプラグインを入れる必要があるので下記コマンドでインストールします。

$ vagrant plugin install vagrant-docker-compose

vagrant-docker-composeの使い方などはgithubに書いてあります。
https://github.com/leighmcculloch/vagrant-docker-compose

Vagranfileの作成

Vagrant.configure("2") do |config|
  config.vm.box = "bento/centos-7.3"

  config.vm.network "forwarded_port", guest: 80, host: 80
  config.vm.network "forwarded_port", guest: 8080, host: 8080

  config.vm.synced_folder "../html", "/root/workspace/html"
  config.vm.synced_folder "../docker", "/root/workspace/docker"

  config.vm.provision :docker
  config.vm.provision :docker_compose, compose_version: "1.11.1", yml: "/root/workspace/docker/docker-compose.yml"
end

これでホストOSのhtmlフォルダにコンテンツを入れればページを見ることができる。

Vagrantの起動

Vagrantfileがあるディレクトリで下記コマンドを実行

$ vagrant up

最後に

githubにあげてあります。
github.com