WEBシステムを構築する時の開発環境をローカルPCに構築するのにDockerは最適です。
もはやVirtualBoxやVMwareなどは、メモリ食い過ぎ、CPU専有しすぎ、重すぎ、遅すぎ・・・
ノートPCにでもサクサク動いてくれるDockerを使ったらもう他の仮想OSは使えませんね。
LAMP環境だけなら、MAMPでも良いんですが、Linuxモジュールなどの連携が必要な場合も多いし、そもそもnodejsに十分に対応できないので、やはりdockerですね。
docker下準備
Macに対してDockerアプリケーションのインストールは過去記事を参考にしてください。
Mac版Dockerを使って開発環境の構築
そして、Dockerには、起動時に一括処理してくれるDockerfileというファイルを作って、コマンド実行するだけでいいという便利な機能があります。
今回はこちらを使って、ソースダウンロードから基本環境起動までを一発で行えるDockerfileを作ってみたいと思います。
Dockerfile
今回はCentOS7に対してapache,php70,mysqlを最初にインストールしてイメージを作成してみます。
FROM centos:centos7
# Import the Centos-7 RPM GPG key to prevent warnings
RUN rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7
RUN rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7
# system update
RUN yum -y update && yum clean all
# set locale
RUN yum reinstall -y glibc-common && yum clean all
RUN localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
RUN unlink /etc/localtime
RUN ln -s /usr/share/zoneinfo/Japan /etc/localtime
# =====
# BASE packages
# =====
RUN yum --enablerepo=extras clean metadata
RUN yum install -y zlib zlib-devel make gcc gcc-c++ openssl openssl-devel readline-devel pcre pcre-devel
RUN yum install -y openssh openssh-server
RUN yum install -y net-tools wget sudo
RUN yum install -y tar zip unzip bzip2 which tree
RUN yum install -y git
# =====
# Modules
# =====
# Apache
RUN yum install -y httpd
RUN systemctl enable httpd.service
# PHP
RUN yum install -y epel-release
RUN rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
RUN yum install -y --enablerepo=remi,remi-php71 php php-cli php-common php-devel php-mbstring php-pdo php-gd php-mysqlnd php-xml php-pecl-apc php-intl php-pear php-zip
# MySQL
RUN yum localinstall -y http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
RUN yum -y install mysql-community-server
RUN systemctl enable mysqld.service
任意ディレクトリに上記の「Dockerfile」を作成して、設置しておきます。
次にターミナルで上記のDockerfileが追いてあるディレクトリに移動して、下記コマンドでビルド実行。
$ docker build -t eccube/eccube3:0.1 .
今回はEC-CUBE3の環境構築を目的としていたので、イメージ名は「eccube/eccube3」として、タグ名を「0.1」にしています。
ビルドコマンドを実行する時は、一番最後に「.」(ピリオド)の付け忘れに注意しましょうね。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
eccube/eccube3 0.1 4d972fd907b6 2 minutes ago 2.49GB
centos centos7 9f38484d220f 4 weeks ago 202MB
起動してアクセスして調整
OSインストールが管理したら、イメージを起動してみましょう。
$ docker run --privileged -it -d --name eccube3 eccube/eccube3:0.1 /sbin/init
この時点でエラーがでるようであれば、これまでの設定になにかしらの不備があるので、dockerイメージを削除してやり直しをしなければいけません。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5bec97064214 eccube/eccube3:0.1 "/sbin/init" 6 minutes ago Up 6 minutes 0.0.0.0:80->80/tcp eccube3
とりあえず、不具合が起きる要因はたくさんあるので、そちらは割愛して、起動に成功したら、次は、OSにアクセスします。
$ docker exec -it eccube3 bash
[root@5bec97064214 /]#
この状態までいけば、あとはCentOSに対して、必要なモジュールをインストールしていきます。
運用に使うコマンド
ターミナル操作をしている時に、dockerコンテナを抜けたい時は、「control + P + Q」を押すと抜けられます。
その後再アクセスしたい場合は、初回にアクセスした同じコマンドを実行しましょう。
$ docker exec -it eccube3 bash
[root@5bec97064214 /]#
最後にイメージを保存しておきましょう
各種インストール操作など完了したら、イメージデータを保存しておきましょう。
1. [control] + P + Qでコンテナを抜ける
2. $ docker commit -m "setting-fix" eccube3 eccube/eccube3:0.2
sha256:3459ead389fcd442f40921efd0a750b2f9ea7274b793ddb4e0455e85199629a8
成功したら、imagesで確認してみましょう。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
eccube/eccube3 0.2 3459ead389fc 29 seconds ago 2.63GB
eccube/eccube3 0.1 4d972fd907b6 17 minutes ago 2.49GB
centos centos7 9f38484d220f 4 weeks ago 202MB
無事に0.2タグが作成されているので、dockerアプリを再起動しても、同じ環境でOSを復活することが出来るようになりました。
ちなみに、このOSイメージを他のPCに端末でも使いたい場合は、ファイルとしても書き出すことができます。
起動しているコンテナをファイルにエクスポートする方法
$ docker export eccube3 -o eccube3.tar
出力されたファイルからコンテナインポート
docker import eccube.tar
自分の環境構築ができたら、プロジェクトチーム内で共有して、同じ環境での開発を行なうことで、チームの作業効率アップできるといいですね。
0 件のコメント:
コメントを投稿