作業環境
■前提
- Docker for Macインストール済み
- AWS EC2インスタンス作成済み
■環境
- macos high sierra 10.13.6
- EC2 Amazon Linux AMI release 2018.03
なぜ興味を持った
今年の1月〜4月までは開発環境の構築の仕事をする時には差分を調べて本番環境に合わすことに多くの時間を使いました。Docker/Kubernetes 実践コンテナ開発入門という本を読んで開発環境も本番環境もDockerにすれば環境差異問題からの脱却することができるを知って、もうすでにかもしれませんがこれからはこれだと思いました!!!
解説
全体の流れ
- Docker for Macで開発環境を作って開発をする。
- インフラとアプリケーションを同梱した箱のようなコンテナのイメージを作成してDocker Hubにプッシュ。
- EC2のLinux上のDockerを使ってDocker Hubにプッシュしたイメージを取得してこれを使って本番環境を作成する。
※ 開発環境はDocker for Windowsだと本番環境はLinux環境で上手く行かないの情報はありましたが、Docker for Macでは問題なくできました。
開発環境
- ディレクトリの構成
- delusion_quiz
アプリケーションの実体 - Dockerfile
Dockerコンテナの構成内容をまとめて記述されているファイル
- docker-compose.yml
yaml でDocker コンテナに関する起動オプションを記述したファイル
FROM php:7.0.21-apache
COPY ./delusion_quiz/ /var/www/html
version: "3"
services:
echo:
build: .
ports:
- 80:80
以上の条件で下記のコマンドを実行するとos、ミドルウェア、phpのどれも揃ってアプリケーションが動くようになる
docker-compose up
-
イメージを作成してDocker Hubにプッシュ
1. コンテナを確認
docker ps -a
2. コンテナをイメージにコミットする
docker commit 092723cefd67 iiwao/delusion_quiz:version1
3. コミットしたイメージを確認
docker image ls
4. イメージをDocker Hubにプッシュ
docker image push iiwao/delusion_quiz:version1
以上でDocker Hubにイメージがアップされる
本番環境
EC2のLinux上のdockerで以下を実行する
- Docker Hubからイメージを取得
docker pull iiwao/delusion_quiz:version1
- イメージをコンテナにビルドする
docker build -t iiwao/delusion_quiz .
- Docker実行環境の80ポート経由でHTTPリクエストを受けられるようにする
docker run -dit -p 80:80 iiwao/delusion_quiz:version1
以上で簡単な開発環境も本番環境もDockerが完成
EC2にデプロイしたアプリケーション