SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
Web系エンジニアのための
スキルアップ講座
ー Dockerで開発環境を作ろう ー
All Rights Reserved Metrocode.co
Dockerとは?
2
All Rights Reserved Metrocode.co
‒さくらのナレッジ(https://knowledge.sakura.ad.jp/13265/)
“Dockerは、インフラ関係やDevOps界隈で注目されている技術の一つ
で、Docker社が開発している、コンテナ型の仮想環境を作成、配布、
実行するためのプラットフォームです。”
3
All Rights Reserved Metrocode.co
VirtualBoxなどの仮想マシンと何が違うか?
4
Dockerは、ホストOS上に環境ごとにOSを動かさないため、
軽量で起動・停止などが高速に行えます。
また、インストールや環境設定がDockerfileでコードとして記述されているので、
Dockerfileさえあれば、容易に同じ環境の共有が可能になります。
ホストマシン ホストマシン
ホストOS ホストOS
Docker Engine Hypervisor
ミドルウェア
アプリ
ゲストOS
ミドルウェア
アプリ
ゲストOS
ミドルウェア
アプリ
ミドルウェア
アプリ
Docker 仮想マシン
All Rights Reserved Metrocode.co
Dockerをインストールしよう!
5
All Rights Reserved Metrocode.co
Docker Desktopをダウンロード
6
https://www.docker.com/products/docker-desktop
ここからデスクトップアプリをダウンロード&インストール。
必要なものがすべてインストールされます。
All Rights Reserved Metrocode.co
Docker Desktopを起動する
7
Docker Desktopを起動してターミナルで、docker -v とコマンドを実行して
バージョン情報が表示されれば、正しくインストールされています。
All Rights Reserved Metrocode.co
Dockerfileとは?
8
All Rights Reserved Metrocode.co
Dockerfile
9
Dockerfileは、Docker上で動作するコンテナの構成情報を記述するファイルです。
このファイルにコマンドなどを記述していくことで、様々なことができますが、
今回は、docker-compose というものを使用して開発環境を作ってみたいと思います。
Docker compose とは、複数のコンテナから成るサービスを構築・実行する手順を自動的にし、管理を容易にする機能です。
Docker compose では、compose ファイルを用意してコマンドを1 回実行することで、そのファイルから設定を読み込んで
すべてのコンテナサービスを起動することができます。ー Docker compose ことはじめハンズオン - Qiita
All Rights Reserved Metrocode.co
開発環境をdocker-composeで作成する
10
All Rights Reserved Metrocode.co
docker-compose LAMP環境用ファイル
11
GithubにLAMP環境の構築ができるファイルセットを置いてあります。
このセットには、Apache、Mriadb、PHP、MailHog(メールテストツール)が含まれています。
まずは、適当なディレクトリにダウンロードしてください。
https://github.com/joey-i/docker-sample
All Rights Reserved Metrocode.co
コンテナを起動する
12
先ほどダウンロードしたディレクトリにターミナルで移動します。
その後、docker-compose up -d を実行します。
これで、Dockerコンテナが起動します。
最初は、ダウンロードなどで時間がかかりますが、
次回からはすぐに起動します。
Dockerコンテナが起動したら http://localhost でブラウザから確認ができます。
また、http://localhost:8025 でメールのテストツール MailHogの画面が開きます。
スマートフォンなどからは、同一ネットワーク内であれば、localhostの代わりにマシンのIPアドレスを指定すると閲覧することができます。
All Rights Reserved Metrocode.co
起動と停止に使用するコマンド
13
docker-compose up -d
コンテナの起動
docker-compose stop
コンテナの停止
docker system prune
使用していないイメージなどの削除
※ 他にもいろいろなコマンドがあります。興味があれば、調べてみてください。
All Rights Reserved Metrocode.co
docker-compose.yml について
14
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になります。
All Rights Reserved Metrocode.co
ありがとうございました。
16

Weitere ähnliche Inhalte

Was ist angesagt?

Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要
Kazuyuki Mori
 
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
Etsuji Nakai
 

Was ist angesagt? (20)

コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
Docker道場オンライン#1 Docker基礎概念と用語の理解
Docker道場オンライン#1 Docker基礎概念と用語の理解Docker道場オンライン#1 Docker基礎概念と用語の理解
Docker道場オンライン#1 Docker基礎概念と用語の理解
 
Docker で Deep Learning
Docker で Deep LearningDocker で Deep Learning
Docker で Deep Learning
 
Docker Hello World
Docker Hello WorldDocker Hello World
Docker Hello World
 
CAMPHOR- day 2020 - Docker 超入門
CAMPHOR- day 2020 - Docker 超入門CAMPHOR- day 2020 - Docker 超入門
CAMPHOR- day 2020 - Docker 超入門
 
Microsoft azureとdockerとansibleと
Microsoft azureとdockerとansibleとMicrosoft azureとdockerとansibleと
Microsoft azureとdockerとansibleと
 
Windows とコンテナの話
Windows とコンテナの話Windows とコンテナの話
Windows とコンテナの話
 
Docker1.13で変わったことをわからないなりにまとめてみた
Docker1.13で変わったことをわからないなりにまとめてみたDocker1.13で変わったことをわからないなりにまとめてみた
Docker1.13で変わったことをわからないなりにまとめてみた
 
dockerでImmutable InfrastructureなWordPressを考える
dockerでImmutable InfrastructureなWordPressを考えるdockerでImmutable InfrastructureなWordPressを考える
dockerでImmutable InfrastructureなWordPressを考える
 
Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要
 
本格的にコンテナを利用するために ~ Azureでのコンテナ利用パターン
本格的にコンテナを利用するために ~ Azureでのコンテナ利用パターン本格的にコンテナを利用するために ~ Azureでのコンテナ利用パターン
本格的にコンテナを利用するために ~ Azureでのコンテナ利用パターン
 
【dots. IT勉強会】開発環境のDocker化
【dots. IT勉強会】開発環境のDocker化【dots. IT勉強会】開発環境のDocker化
【dots. IT勉強会】開発環境のDocker化
 
Dockerの基本的な話
Dockerの基本的な話Dockerの基本的な話
Dockerの基本的な話
 
Dockerについて
DockerについてDockerについて
Dockerについて
 
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
 
コンテナ導入概要資料2018
コンテナ導入概要資料2018コンテナ導入概要資料2018
コンテナ導入概要資料2018
 
Docker Chronicle 2021.09
Docker Chronicle  2021.09Docker Chronicle  2021.09
Docker Chronicle 2021.09
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
 
Docker向け軽量os 3製品比較
Docker向け軽量os 3製品比較Docker向け軽量os 3製品比較
Docker向け軽量os 3製品比較
 
Windows Server 2019 で Container を使ってみる
Windows Server 2019 で Container を使ってみるWindows Server 2019 で Container を使ってみる
Windows Server 2019 で Container を使ってみる
 

Ähnlich wie Web系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ー

Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Masahiro Nagano
 

Ähnlich wie Web系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ー (20)

Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
 
Microsoft azureで実装するwebserviceondocker
Microsoft azureで実装するwebserviceondockerMicrosoft azureで実装するwebserviceondocker
Microsoft azureで実装するwebserviceondocker
 
明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築
 
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
 
Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもんDocker Swarm モード にゅうもん
Docker Swarm モード にゅうもん
 
第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)
第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)
第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)
 
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
 
20180925 docker ecs_fargate
20180925 docker ecs_fargate20180925 docker ecs_fargate
20180925 docker ecs_fargate
 
いまからでも遅くない Docker事始め&愉快な仲間達
いまからでも遅くない Docker事始め&愉快な仲間達いまからでも遅くない Docker事始め&愉快な仲間達
いまからでも遅くない Docker事始め&愉快な仲間達
 
Docker 入門
Docker 入門Docker 入門
Docker 入門
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
 
捕鯨!詳解docker
捕鯨!詳解docker捕鯨!詳解docker
捕鯨!詳解docker
 
Microsoft Azure で 初めてのDocker
Microsoft Azure で 初めてのDockerMicrosoft Azure で 初めてのDocker
Microsoft Azure で 初めてのDocker
 
Dockerことはじめ的なはなし
Dockerことはじめ的なはなしDockerことはじめ的なはなし
Dockerことはじめ的なはなし
 
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
 
Docker講習会資料
Docker講習会資料Docker講習会資料
Docker講習会資料
 
オトナのDocker入門
オトナのDocker入門オトナのDocker入門
オトナのDocker入門
 
Dockerで作るd3.jsインタラクション共有&DL環境
Dockerで作るd3.jsインタラクション共有&DL環境Dockerで作るd3.jsインタラクション共有&DL環境
Dockerで作るd3.jsインタラクション共有&DL環境
 
Vagrant & Dockerによるイマドキの開発環境構築
Vagrant & Dockerによるイマドキの開発環境構築Vagrant & Dockerによるイマドキの開発環境構築
Vagrant & Dockerによるイマドキの開発環境構築
 

Web系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ー

  • 2. All Rights Reserved Metrocode.co Dockerとは? 2
  • 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 仮想マシン
  • 5. All Rights Reserved Metrocode.co Dockerをインストールしよう! 5
  • 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 とコマンドを実行して バージョン情報が表示されれば、正しくインストールされています。
  • 8. All Rights Reserved Metrocode.co Dockerfileとは? 8
  • 9. All Rights Reserved Metrocode.co Dockerfile 9 Dockerfileは、Docker上で動作するコンテナの構成情報を記述するファイルです。 このファイルにコマンドなどを記述していくことで、様々なことができますが、 今回は、docker-compose というものを使用して開発環境を作ってみたいと思います。 Docker compose とは、複数のコンテナから成るサービスを構築・実行する手順を自動的にし、管理を容易にする機能です。 Docker compose では、compose ファイルを用意してコマンドを1 回実行することで、そのファイルから設定を読み込んで すべてのコンテナサービスを起動することができます。ー Docker compose ことはじめハンズオン - Qiita
  • 10. All Rights Reserved Metrocode.co 開発環境をdocker-composeで作成する 10
  • 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 使用していないイメージなどの削除 ※ 他にもいろいろなコマンドがあります。興味があれば、調べてみてください。
  • 14. All Rights Reserved Metrocode.co docker-compose.yml について 14
  • 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になります。
  • 16. All Rights Reserved Metrocode.co ありがとうございました。 16