はじめに
この記事はコンテナ勉強用として試したことまとめたものです。
仕事でDockerを使ったアプリケーションデプロイをしているので、理解を深めるために自分でも簡単なアプリケーションデプロイを試してみました。
手順
- CentOSをベースイメージとしてWebサーバに実行環境を構築する。
- RUNコマンドでNginxをインストール
- CMD命令でデーモンの実行
- ONBUILDコマンドでWebコンテンツを配置
イメージのビルド
- 以下内容でビルドを実行する。(Dockerfile.baseファイルとして保存)
# イメージ設定
FROM centos:7
# リポジトリ追加
COPY ./nginx.repo /etc/yum.repos.d/nginx.repo
# Nginxインストール
RUN yum -y install nginx
# ポート指定
EXPOSE 80
# Webコンテンツ配置
ONBUILD ADD website.tar /usr/share/nginx/html
# Nginx実行
CMD ["nginx", "-g", "daemon off;"]
- コマンド実行
# docker build -t web-base -f Dockerfile.base ./
Sending build context to Docker daemon 717.3kB
Step 1/6 : FROM centos:7
---> 9f38484d220f
Step 2/6 : COPY ./nginx.repo /etc/yum.repos.d/nginx.repo
---> 663ac757cfe4
Step 3/6 : RUN yum -y install nginx
---> Running in accbe252a05c
Loaded plugins: fastestmirror, ovl
Determining fastest mirrors
* base: ftp.tsukuba.wide.ad.jp
* extras: ftp.tsukuba.wide.ad.jp
* updates: ftp.tsukuba.wide.ad.jp
Resolving Dependencies
・・・(中略)・・・
Complete!
Removing intermediate container accbe252a05c
---> bef67394d4e0
Step 4/6 : EXPOSE 80
---> Running in e1f36112e98c
Removing intermediate container e1f36112e98c
---> 9c20f6dda90b
Step 5/6 : ONBUILD ADD website.tar /var/www/html/
---> Running in 5f1817472d21
Removing intermediate container 5f1817472d21
---> 69b8d93ce29e
Step 6/6 : CMD ["nginx", "-g", "daemon off;"]
---> Running in a22c79cffdc5
Removing intermediate container a22c79cffdc5
---> ab4088c1f974
Successfully built ab4088c1f974
Successfully tagged web-base:latest
#
Webコンテンツを開発
- HTMLやCSSなどでwebsiteという形でtarファイルにまとめる。
Webサーバ用のイメージ作成
- FROM命令で先ほど作成したイメージを指定する。(Dockerfileファイルとして保存)
# Dockerイメージの取得
FROM web-base
- コマンド実行
# docker build -t photoview-image ./
Sending build context to Docker daemon 1.072MB
Step 1/1 : FROM web-base
# Executing 1 build trigger
---> 9f2e92d06358
Successfully built 9f2e92d06358
Successfully tagged photoview-image:latest
#
Webサーバのコンテナ起動
- コマンド実行
# docker container run -d -p 80:80 photoview-image
01b50cdbfb99ad9ec78aa8182c691b8bdec080c83a18d8ae998b82a1f9095bef
#
- アクセス確認

まとめ
- 意外と簡単に構築できた。
- Dockerfileの記述方法について理解を深めていきたい。