読者です 読者をやめる 読者になる 読者になる

ログってなんぼ

日々のメモです

【まだまだ未完成】CentOS+Apache+Mysqlを自動起動するコンテナのDockerfileを書いてみた

mysql infra

とりあえずapacheの起動とブラウザからの確認はできたものの、まだまだいい加減なのでこれから育てていくことになりますが、せっかく作業したのでメモ。

ちなみに

okisanjp.hatenablog.jp

こちらの続きです。VagrantとCoreOSのセットアップについては上記参照でお願いします。

CoreOSのコンソールで作業

$ vagrant up
$ vagrant ssh

Dockerfileを書く

コンテナに入って直接色々インストールすることもできますが、Dockerfileを書いてbuildする形のほうが何かと便利なのでまずDockerfileを書いていきます。

任意のディレクトリを作ってそこで作業します。

core@core-01 ~/centos_lamp $ vim Dockerfile

FROM centos:centos6
MAINTAINER okisanjp <okisan.jp@gmail.com>

# adjust Timezone
RUN mv /etc/localtime /etc/localtime.org; ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

# package manager update
RUN yum -y update

# LAMP install
RUN yum -y install httpd
RUN yum -y install php php-devel php-pecl-memcache php-gd php-mysql php-intl php-xml php-mbstring
RUN sed -ri 's/;date.timezone =/date.timezone = Asia/Tokyo/g' /etc/php.ini
RUN yum -y install mysql-server

# apache setup
RUN chkconfig httpd on

# mysql setup
RUN chkconfig mysqld on

# ports
EXPOSE 80

# start services
ENTRYPOINT /etc/init.d/mysqld start && /etc/init.d/httpd start && /bin/bash

とりあえずごく簡単なものを書いて保存しました。

build

ではbuildします

core@core-01 ~/centos_lamp $ docker build -t="okisanjp/centos_lamp" --rm=true .

・
・
・
Removing intermediate container 476b388b1831
Successfully built 37347e7de60a

内容に問題がなかったっぽく、普通に終わりました。

動作確認

今buildしたコンテナの動作確認をしていきます

imageの確認

core@core-01 ~/centos_lamp $ docker images
REPOSITORY             TAG                 IMAGE ID            CREATED              VIRTUAL SIZE
okisanjp/centos_lamp   latest              37347e7de60a        About a minute ago   472.3 MB

ちゃんと出来てます

コンテナの起動

ホストマシン(mac)のブラウザで動作確認するので、コンテナのport80をホストマシンの8080へ転送する設定とともにコンテナを起動します。

core@core-01 ~/centos_lamp $ docker run -i -t -p 8080:80 okisanjp/centos_lamp
0ee9e5ab9bfe162cd0f14f995f93b7a8b1ae9a8ccb0599087b675a5873e3873e

起動したようです

確認

core@core-01 ~/centos_lamp $ docker ps
CONTAINER ID        IMAGE                         COMMAND                CREATED             STATUS              PORTS                  NAMES
0ee9e5ab9bfe        okisanjp/centos_lamp:latest   "/bin/sh -c '/etc/in   46 seconds ago      Up 44 seconds       0.0.0.0:8080->80/tcp   jolly_hoover

これでいいのかな・・・起動オプションは

Command line - Docker Documentation

こちらを参照しながらやってみましたが・・・一応起動しているようなので、詳しい調査は置いといて次へ進む・・

ブラウザで確認

ホストOS(今回のケースではCoreOSのIPアドレス)の8080ポートをホストマシン(Mac)のブラウザで開いてみて、Apacheの初期画面が出ればOK

f:id:Okisanjp:20160715123906p:plain

OKです。

ホストマシンの共有フォルダをコンテナのDocumentRootにマウント

MacでコーディングしたものをコンテナのApacheで表示させたいので、そのように起動してみます。

ホストOS(CoreOS)の共有フォルダ確認

MacにVagrant+CoreOS+Dockerの環境を作る | ログってなんぼ
こちらのエントリで、ホストOSにMacのフォルダをマウントしてあるのでそれをコンテナに共有します。

core@core-01 ~/centos_lamp $ df -h
df: '/var/lib/docker/btrfs': Permission denied
Filesystem                            Size  Used Avail Use% Mounted on
rootfs                                 17G  2.5G   14G  16% /
devtmpfs                              488M     0  488M   0% /dev
tmpfs                                 500M     0  500M   0% /dev/shm
tmpfs                                 500M  236K  499M   1% /run
tmpfs                                 500M     0  500M   0% /sys/fs/cgroup
/dev/sda9                              17G  2.5G   14G  16% /
/dev/sda3                            1008M  288M  670M  31% /usr
tmpfs                                 500M     0  500M   0% /tmp
tmpfs                                 500M     0  500M   0% /media
/dev/sda6                             108M   88K   99M   1% /usr/share/oem
172.17.8.1:/Users/okisanjp/workspace  233G   71G  162G  31% /home/core/share

コンテナを再起動

一度killしてからもう一度引数を増やして起動します

core@core-01 ~/centos_lamp $ docker kill 0ee9e5ab9bfe
0ee9e5ab9bfe
core@core-01 ~/centos_lamp $ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

core@core-01 ~/centos_lamp $ docker run -i -t -p 8080:80 -v /home/core/share/html:/var/www/html okisanjp/centos_lamp

ブラウザで確認して、任意のコンテンツが表示されればOKです。

コミット

core@core-01 ~/centos_lamp $ docker commit 459046c25a97 okisanjp/centos_lamp

課題満載

  • mysql関連の設定を何もDockerfileに書いてない
  • httpd,mysqlなどのconfの編集
  • そのたもろもろ

ぶっちゃけ、ただ動いただけって感じの状態ですのでまだまだ調査して育てていかないとって感じですが・・・

とりあえず自分の作業メモとして個々に残しておこうと思います。