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と組み合わせてビルドとデプロイを自動化出来る
コメント