Weitere ähnliche Inhalte Ähnlich wie Web系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ー (20) Web系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ー3. All Rights Reserved Metrocode.co
‒さくらのナレッジ(https://knowledge.sakura.ad.jp/13265/)
“Dockerは、インフラ関係やDevOps界隈で注目されている技術の一つ
で、Docker社が開発している、コンテナ型の仮想環境を作成、配布、
実行するためのプラットフォームです。”
3
4. All Rights Reserved Metrocode.co
VirtualBoxなどの仮想マシンと何が違うか?
4
Dockerは、ホストOS上に環境ごとにOSを動かさないため、
軽量で起動・停止などが高速に行えます。
また、インストールや環境設定がDockerfileでコードとして記述されているので、
Dockerfileさえあれば、容易に同じ環境の共有が可能になります。
ホストマシン ホストマシン
ホストOS ホストOS
Docker Engine Hypervisor
ミドルウェア
アプリ
ゲストOS
ミドルウェア
アプリ
ゲストOS
ミドルウェア
アプリ
ミドルウェア
アプリ
Docker 仮想マシン
6. All Rights Reserved Metrocode.co
Docker Desktopをダウンロード
6
https://www.docker.com/products/docker-desktop
ここからデスクトップアプリをダウンロード&インストール。
必要なものがすべてインストールされます。
7. All Rights Reserved Metrocode.co
Docker Desktopを起動する
7
Docker Desktopを起動してターミナルで、docker -v とコマンドを実行して
バージョン情報が表示されれば、正しくインストールされています。
9. All Rights Reserved Metrocode.co
Dockerfile
9
Dockerfileは、Docker上で動作するコンテナの構成情報を記述するファイルです。
このファイルにコマンドなどを記述していくことで、様々なことができますが、
今回は、docker-compose というものを使用して開発環境を作ってみたいと思います。
Docker compose とは、複数のコンテナから成るサービスを構築・実行する手順を自動的にし、管理を容易にする機能です。
Docker compose では、compose ファイルを用意してコマンドを1 回実行することで、そのファイルから設定を読み込んで
すべてのコンテナサービスを起動することができます。ー Docker compose ことはじめハンズオン - Qiita
11. All Rights Reserved Metrocode.co
docker-compose LAMP環境用ファイル
11
GithubにLAMP環境の構築ができるファイルセットを置いてあります。
このセットには、Apache、Mriadb、PHP、MailHog(メールテストツール)が含まれています。
まずは、適当なディレクトリにダウンロードしてください。
https://github.com/joey-i/docker-sample
12. All Rights Reserved Metrocode.co
コンテナを起動する
12
先ほどダウンロードしたディレクトリにターミナルで移動します。
その後、docker-compose up -d を実行します。
これで、Dockerコンテナが起動します。
最初は、ダウンロードなどで時間がかかりますが、
次回からはすぐに起動します。
Dockerコンテナが起動したら http://localhost でブラウザから確認ができます。
また、http://localhost:8025 でメールのテストツール MailHogの画面が開きます。
スマートフォンなどからは、同一ネットワーク内であれば、localhostの代わりにマシンのIPアドレスを指定すると閲覧することができます。
13. All Rights Reserved Metrocode.co
起動と停止に使用するコマンド
13
docker-compose up -d
コンテナの起動
docker-compose stop
コンテナの停止
docker system prune
使用していないイメージなどの削除
※ 他にもいろいろなコマンドがあります。興味があれば、調べてみてください。
15. All Rights Reserved Metrocode.co
docker-compose.yml の簡単な説明
15
1 version: '3'
2
3 services:
4
5 apache:
6 image: 'bitnami/apache:2.4'
7 container_name: apache_docker_sample
8 working_dir: /application
9 ports:
10 - "80:8080"
11 - "443:8443"
12 volumes:
13 - ./web_app/public_html:/app
14 - ./apache_data:/vhosts
15 depends_on:
16 - mariadb
17 - php-fpm
18
19 #PHP
20 php-fpm:
21 build: ./php-fpm
22 container_name: php-fpm_docker_sample
23 working_dir: /application
24 volumes:
25 - ./web_app/public_html:/app
26 - ./php-fpm/php-ini-overrides.ini:/etc/php.d/php-ini-overrides.ini
27
28 #MARIADB
29 mariadb:
30 image: mariadb:10.3
31 container_name: mariadb_docker_sample
32 working_dir: /application
33 hostname: 127.0.0.1
34 ports:
35 - "3307:3307"
36 volumes:
37 - .:/application
38 - ./mysql-data:/var/lib/mysql
39 - ./mariadb/my-overrider.cnf:/etc/mysql/my.cnf
40 environment:
41 - MYSQL_ROOT_PASSWORD=${DB_PASS}
42 - MYSQL_DATABASE=${DB_DATABASE}
43 - MYSQL_USER=${DB_USER}
44 - MYSQL_PASSWORD=${DB_PASS}
45 env_file:
46 - .env
47 mailhog:
48 image: mailhog/mailhog
49 ports:
50 - "8025:8025"
51 - "1025:1025"
docker-compose.ymlは、ホストとコンテナのマウントディレクトリや、使用する
イメージなどの構成を設定するファイルです。
image
指定のサービスで使用するイメージを設定します。ここでイメージを指定しない場合は、buildで指定し
たディレクトリ内にあるDockerfileで指定されています。
posrts
ホストとコンテナのポートマッピングを指定します。ホスト:コンテナのルールで記述。80:8080の場合
は、ホストは80番、コンテナは8080番のポートを使用するということになります。
volumes
ホストとコンテナ間で同期するディレクトリを指定します。ホスト:コンテナのルールで記述。
./web_app/public_html:/app の場合、ホストの./web_app/public_html がコンテンの/app ディレク
トリにマウントされます。
docker-compose.yml
MySQLへの接続について
WordPressなどをインストールする際に指定するデータベースのホスト設定の値は、localhostや127.0.0.1ではなく、
docker-compose.ymlのservicesで指定したサービス名になります。この例では、mariadbになります。
Sequel Proなどのデータベース管理ツールから接続する場合のホスト名は、127.0.0.1になります。