dockerfileで作業自動化 & コードで管理

dockerfileとは

dockerイメージの設計図
自分好みのイメージを作れる

今回やる事

1.dockerfileを用いてapache2のインストール
2.index.htmlの配置を完了させたりapache2を自動起動するimageを作る
3.ウェブサーバにアクセスしローカルのindex.htmlが反映されていることの確認

記述例

#ベースのイメージを指定
FROM ubuntu

#timezone設定で固まらないように先に指定
ENV TZ=Asia/Tokyo
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

#apt updateを実行
RUN apt update

#お好みでパッケージのインストール
RUN apt install -y apache2 vim

#"ServerName localhost"をfqdn.confに書き込む
RUN echo "ServerName localhost" | tee /etc/apache2/conf-available/fqdn.conf

#fqdn.confを有効化
RUN a2enconf fqdn

#apache2を自動起動したあとログイン
ENTRYPOINT service apache2 start && /bin/bash --login

#ローカルにあるindex.htmlをコンテナ内にコピーする
COPY index.html /var/www/html

※RUNはimageが作られる時に一度だけ実行する
※CMDはコンテナが作成される度に実行する(コンテナ起動時に引数を指定して上書き可能)
※ENTRYPOINTはコンテナが作成される度に実行する(引数を指定するとエラーになる)
参考:【Docker】EntrypointとCMDの違いは?(動画付き)

イメージを作る(build)

書き方

docker build -t <Dockerイメージ名> <Dockerfileが存在するディレクトリ>

今回はこれ

cd C:\Users\asaka\Documents\docker\httpd 
docker build -t ubuntu-apache .

作ったイメージを元にdockerを起動

docker run --name apache-test -it -p 80:80 ubuntu-apache

その後 webサーバにアクセスしローカルのindex.txtが反映されていることを確認

デフォルトのhttpdイメージと比較

docker pull httpd
docker run --name apache-default -it -p 8000:80 httpd

※docker側でport80を使っているので8000で指定

結論:dockerfileを使うと何がいい?

・めっちゃ楽
・別の環境でも同等のコンテナが使える(持ち運べる)
・CI/CDと組み合わせてビルドとデプロイを自動化出来る

コメント

タイトルとURLをコピーしました