自作アプリを
デプロイしてみた
with Docker
2019 / 12 / 13 ふみたろう
目次
• 前回スライドのお話 - p3
• Docker 説明からhello worldまで - p4
• デプロイについて- p7
• デプロイ手順 - p9
2
前回
• ツイートアプリを自作した
• それで得た知見をスライドにした
スライド - Reactを用いたツイートアプリの作成で得た知見
3
Dockerとは
• コンテナ型の仮想環境
• ゲストOSの起動を必要としない
• 起動が早い
• ユーザ空間を分割するため、
プロセスやシステムの衝突が起きない
4
Dockerの導入
• $ brew update
• brewの更新
• $ brew install docker
• dockerのインストール
• $ docker -v
• dockerのバージョン確認(インストール確認)
5
Dockerで「hello world」
• $ docker run hello-world
• 「hello-world」イメージでコンテナを作成・実行
6
デプロイについて
• 今回はhttpdなどのwebサーバにデプロイする
• そもそもhttpdって何者?
→ 次のスライドで概要をまとめました
7
httpd とは
• HyperText Transfer Protocol Daemon
• リクエストに応じて動作する常駐プログラム
• http通信で受け取ったリクエストに対して
処理を行ったり、データを返したりする
8
自作アプリのデプロイ手順
1. 自作アプリの成果物を出力する
2. Dockerfileを作成する
3. 自作アプリのコンテナイメージを作成する
4. 作成したイメージでコンテナを起動する
9
自作アプリの成果物を出力する
• 今回の自作アプリ (ツイートアプリ) は
Reactを用いて開発し、
パッケージ管理には
yarn を使用しているため、
$ yarn build で
成果物を出力できる
10
DockerFileを作成する(前に)
• 現在のディレクトリ構成
11
TweetApp
┣tweet-app
┃┣build
┃┗src
┗Dockerfile
前スライドで出力した
成果物フォルダ
これから作成する
DockerFile
←
←
• Dockerfileという名前でファイルを作成
• 中身にはDockerの構成内容を記述
• スクリプトのようなもの
Dockerfileを作成する
12
Dockerfileの中身
• FROM httpd:2.4
• version 2.4 のhttpdイメージを基にする
• COPY ./tweet-app/build/ /usr/local/apache2/htdocs/
• デプロイする成果物ディレクトリ(ホスト)
• 相対パスで記述(絶対パスは×)
• コンテナ内の実行ディレクトリ(ゲスト)
• 中間にスペースで区切る
13
自作アプリの
コンテナイメージを作成する
• 前述で作成したDockerfileを用いて
コンテナイメージを作成する
• Dockerfileがあるディレクトリで
以下コマンドを実行
• $ docker builde -t tweet-app-image .
• -t オプションでイメージの名前を登録
14
作成したイメージで
コンテナを起動する
• 作成したイメージを使用し、
コンテナを起動することで、
自作アプリのデプロイが完了する。
• $ docker run -dit
—name my-tweet-app
-p 8080:80
tweet-app-image
15
• オプションについては後述
• http://localhost:8080/ に
デプロイされる
docker run オプション (-dit)
• -dit : -d、-i、-tの合わせ技
• -d : コンテナをバックグラウンドで実行
• -i : コンテナのstdin (標準入力) にアタッチ
• コンテナに入力可能にする
• -t : tty (疑似ターミナル) の割り当て
• ターミナルから操作可能にする
• 今回に限っては「-i」「-t」は不要
16
docker run オプション (その他)
• —name : コンテナ名の登録
• 「-」は2個
• -p : ポートの指定
• 公開ポートとポートプロトコルの指定
• 最後に、使用するコンテナイメージを指定
17
http://localhost:8080/
に接続
デプロイ手順再掲
1. 自作アプリの成果物を出力する
2. Dockerfileを作成する
3. 自作アプリのコンテナイメージを作成する
4. 作成したイメージでコンテナを起動する
19
まとめ
• dockerについて
• dockerを用いた
自作アプリのデプロイについて
20
参考資料
• はじめてのdocker
• httpdとは - IT用語辞典 e-Words
• Apacheとは?| カゴヤのサーバー研究室
• run — Docker-docs-ja ドキュメント
21

自作アプリをデプロイしてみた with Docker