docker imageを作成して簡単にローカル開発環境を構築しよう
はじめに
色々な案件にアサインする機会が多く、その都度、案件に合わせたローカル開発環境を構築していました。
mysqlを停止して、mariadbを起動する、apacheを停止してnginxを起動するなど、面倒くさいことが発生していました。
上記の内容を解決するために、2年前くらいからdockerを導入しました。
その内容を記載して、私と同じ状況が打破できれば幸いです。
dockerを使用する利点について
ローカルPCの言語やミドルウェアの乱立を防ぐ
開発チーム内でローカル開発環境を使いわますことができる
amazon EC2 Container Serviceなどを使用して、そのまま本番へデプロイできる。
※ 業務に使用できるレベルなのかは検証してください。
検証PC
- macOS Mojave バージョン 10.14
Docker for Macをインストール
ローカルPCの言語やミドルウェアの乱立を防ぐ
開発チーム内でローカル開発環境を使いわますことができる
amazon EC2 Container Serviceなどを使用して、そのまま本番へデプロイできる。
※ 業務に使用できるレベルなのかは検証してください。
- macOS Mojave バージョン 10.14
Docker for Macをインストール
URLから「Download from Docker Store」を押下
右上の「Get Docker」を押下し、Dockerのインストーラーをダウンロード
※最近、docker hubの会員登録が必要になったため、会員登録すること。
ダウンロードが完了した後にターミナルを開き、下記のコマンドを実行
$ docker version
Client: Docker Engine - Community
Version: 18.09.2
API version: 1.39
Go version: go1.10.8
Git commit: 6247962
Built: Sun Feb 10 04:12:39 2019
OS/Arch: darwin/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.2
API version: 1.39 (minimum version 1.12)
Go version: go1.10.6
Git commit: 6247962
Built: Sun Feb 10 04:13:06 2019
OS/Arch: linux/amd64
Experimental: true
docker-composeをダウンロード
「docker-compose」とは複数のコンテナを使うDockerアプリケーションを定義・実行するツールです。
最新のdockerのドキュメントを読みましたが、最新の「Docker for Mac」には「docker-compose」がDockerアプリに梱包されいるそうです。
Follow these instructions if you are running the Docker daemon and client directly on Microsoft Windows Server with Docker Engine - Enterprise, and want to install Docker Compose.
下記のコマンドを実行してdocker-composeをダウンロード
curl -L https://github.com/docker/compose/releases/download/1.6.2/docker-compose-
uname -s-
uname -m> /usr/local/bin/docker-compose
下記のコマンドを実行
chmod +x /usr/local/bin/docker-compose`
下記のコマンドを実行して正常に表示されればOKです。
$ docker-compose version
docker-compose version 1.23.2, build 1110ad01
docker-py version: 3.6.0
CPython version: 3.6.6
OpenSSL version: OpenSSL 1.1.0h 27 Mar 2018
docker-composeファイルの作成
検証用のディレクトリを作成
mkdir docker-compose-test
「docker-compose-test」に移動
cd docker-compose-test
dockerの設定を記載するymlファイルを作成
touch docker-compose.yml
「docker-compose.yml」に下記の内容をコピー
version: '3'
services:
amazonlinux2:
container_name: amazonlinux2
image: amazonlinux:2
ports:
- 80:80
tty: true
privileged: true
restart: always
docker-composeでdocker containerを起動
下記、コマンドを実行し、コンテナを起動
docker-compose up -d --build
下記のように表示されていればOKです。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
96cca54b9e91 amazonlinux:2 "/bin/bash" 44 seconds ago Up 43 seconds 0.0.0.0:80->80/tcp amazonlinux2
docker container内にlogin
docker exec -it amazonlinux2 bash
docker imageを作成
docker containerを確認
kusunokBookpuro:docker-compose ry_kusunoki$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
96cca54b9e91 amazonlinux:2 "/bin/bash" 16 minutes ago Up 16 minutes 0.0.0.0:80->80/tcp amazonlinux2
docker containerを停止
docker-compose stop
docker containerが停止されているのを確認
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
96cca54b9e91 amazonlinux:2 "/bin/bash" 17 minutes ago Exited (137) 31 seconds ago amazonlinux2
docker containerからimageを作成
$docker commit amazonlinux2 project_name:1
sha256:1d727fdd2987cfb95f33469648facd6e2b7c2a2d682c9267191346a6c185052e
「docker image」が作成されているのを確認
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
project_name 1 1d727fdd2987 46 seconds ago 163MB
先ほどの「docker-compose.yml」を修正
version: '3'
services:
amazonlinux2:
container_name: project_name1
image: project_name:1
ports:
- 80:80
tty: true
privileged: true
restart: always
作成したdocker imageでdocker containerを起動
docker-compose up -d --build
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3849b30ec5bd project_name:1 "/bin/bash" 6 seconds ago Up 6 seconds 0.0.0.0:80->80/tcp project_name1
$ docker exec -it project_name1 bash
bash-4.2#
最後に
どうでしたでしょうか?
defaultのコンテナを作成し、そこから案件に沿った環境を構築したdocker imageを作成することによって、ローカルPC内のミドルウェア乱立が防げるのではないのでしょうか?
また、検証用サーバとしても使用でるため、ツール類の動作確認などのテストも実施できます。
急ぎ足で記載したため、ご不明な点がありましたら、お手数ですが、コメントで質問をお願い致します。
最後まで、ご拝読有難う御座いました。
Author And Source
この問題について(docker imageを作成して簡単にローカル開発環境を構築しよう), 我々は、より多くの情報をここで見つけました https://qiita.com/anpontanpokan/items/63cf5ad993136065dfc3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .