Docker Installation Challange
開発環境の管理
現在の開発環境
今までは“vagrant”と“VirtualBox”というアプリケーションを使って
開発環境を構築していました。
この組み合わせを選んだ理由は特に無く
強いて言うなれば、以前一緒に開発してた技師がこれを使っていたからです。
前々から“Docker”の方が軽いし
管理がしやすい という噂を聞き今回チャレンジしてみました。
Vagrantのデメリット
- 重い
- 作業環境を構築したあとでまたインフラは別に構築しなければならない
Dockerのメリット
- 軽い(であろう)
- 環境の中身も構築、管理できる
VagrantからDockerへ
結論としては構築は出来たものの
WebApplicationを動かすほどに色々組み込むには至らず。
インストール
ここからダウンロードします。
先にアカウントを作る必要があります。
あとで作成する個別の環境などを管理するための
GitHubアカウントのようなものだと思ってください。
インストール自体はこれで終了。
アプリケーションからDockerを起動しておいてください。
Nginx+PHP-FPM+DB環境の定義
Composeという概念
Dockerにはcomposeという
各サービスの定義を管理する機能があります。
ソフトウェア、コンテンツ、インフラ等を
個別にデプロイ管理することが可能。
Ansibleよりも単体でのバージョン管理などを
厳密に管理しつつ個別にアップデートなども出来る。
サンプル
実際にDeployするときのメインとなる定義ファイル。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | version: '3' services: web: # 構築前のインストールやファイルコピーなどを定義 build: ./docker-nginx ports: - "8888:443" # 設定ファイルなど構築後に必要なファイル群 # またはディレクトリ等 volumes: # 設定 - ./config/nginx.conf:/etc/nginx/conf.d/nginx.conf - ./config/www.conf:/etc/php-fpm.d/www.conf # 証明書 - ./certs:/etc/nginx/conf.d/cert_files # WebApplication - ./LaunchCart:/var/www/html/LaunchCart # コンテナの関連性 links: - app depends_on: - app app: build: ./docker-app volumes: # WebApplication - ./LC:/var/www/html/LC links: - db depends_on: - db db: image: mysql:5.6 ports: - 3306:3306 # DBの認証周り設定 environment: MYSQL_ROOT_PASSWORD: 'root' MYSQL_DATABASE: LaunchCart_Database MYSQL_USER: LaunchCart_User MYSQL_PASSWORD: LaunchCart_Password |
webサーバー, webアプリケーション, DB
ごとにコンテナと呼ばれる単位に区切ってそれぞれを管理します。
Dockerfile
コンテナ毎にdocker-*と指定しているところで
前処理のようなことが出来る。
インストールするソフトウェアのバージョン指定なども可。
例えばNginxの場合だと
1 | FROM nginx:1.10.3 |
のように”1.10.3″を指定してインストール後に
設定ファイルなどの構築をします。
動作
Author Profile
スターフィールド編集部
SHARE