LoginSignup
2
1

More than 3 years have passed since last update.

docker imageを作成して簡単にローカル開発環境を構築しよう

Posted at

はじめに

色々な案件にアサインする機会が多く、その都度、案件に合わせたローカル開発環境を構築していました。
mysqlを停止して、mariadbを起動する、apacheを停止してnginxを起動するなど、面倒くさいことが発生していました。

上記の内容を解決するために、2年前くらいからdockerを導入しました。
その内容を記載して、私と同じ状況が打破できれば幸いです。

dockerを使用する利点について

  • ローカルPCの言語やミドルウェアの乱立を防ぐ

  • 開発チーム内でローカル開発環境を使いわますことができる

  • amazon EC2 Container Serviceなどを使用して、そのまま本番へデプロイできる。
    ※ 業務に使用できるレベルなのかは検証してください。

検証PC

  • macOS Mojave バージョン 10.14

Docker for Macをインストール

URLから「Download from Docker Store」を押下
右上の「Get Docker」を押下し、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-compose(公式サイト)

最新の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内のミドルウェア乱立が防げるのではないのでしょうか?

また、検証用サーバとしても使用でるため、ツール類の動作確認などのテストも実施できます。

急ぎ足で記載したため、ご不明な点がありましたら、お手数ですが、コメントで質問をお願い致します。

最後まで、ご拝読有難う御座いました。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1