自身のアプリケーションにdockerの導入をしようと勉強をしていたところ
とりあえずdockerfileに記述して、docker-composeに記述すると・・・、ハイ、できた・・・
けどよくわからないという状態になってしまったので
dockerfileで行われていることをdockerfileを使わないで実装してみる。
目標
centOSにApacheとPHPをインストールしてphpアプリをコピーしてApacheを起動する
centosのイメージからコンテナを立ち上げる(test)
% docker run -d -it -p 8080:80 --name test centos:centos7
コンテナにログイン
# docker exec -it test /bin/bash
Apacheをインストール
# yum install httpd
phpをインストール
# yum install httpd
Apacheを起動
# /usr/sbin/httpd
コンテナからログアウト
# exit
phpファイル作成
<?php
echo "hoge";
?>
コンテナにコピー
% docker cp test.php test:/var/www/html
と表示される。
わかったこと
centosのイメージから作ったコンテナに
apacheをインストール、phpをインストールと順番に追加していく。
大変。。。
Dockerfileを使うと
以下の同じフォルダにDockerfileを作成
FROM centos:centos7
RUN yum -y install httpd php
COPY test.php /var/www/html/
CMD ["/usr/sbin/httpd","-DFOREGROUND"]
dockerfileのディレクトリで
% docker build -t test .
% docker run -d -p 8080:80 --name testweb test:latest
同じ結果となる。
わかったこと
はじめのやり方をDockerfileに記述して
PCにやってもらう。
簡単。
PHPのdockerイメージを使ってコンテナを作る
Dockerfileを以下に修正
FROM php:7.2-apache
COPY test.php /var/www/html/
dockerfileのディレクトリで
% docker build -t test .
% docker run -d -p 8080:80 --name testweb test:latest
同じ結果となる
わかったこと
「osを何にするか、その後何をインストールするか」を
他の人が指定してくれたもの(dockerfile)をdockerイメージとして
DockerHubからPULLしてくる
もっと簡単。
まとめ
導入の方法ばかり検索してしまい、どうしてこのコードを書いているのかという
根本を忘れてしまう。
手間ではあるが、一度その技術が出来る前の方法を理解すると
なぜその技術が生まれたのか、どれくらい便利なものなのかが実感できることがわかった。
参考にしたページ
世界一わかりみが深いコンテナ & Docker入門 〜 その3:Dockerfileってなに? 〜
https://tech-lab.sios.jp/archives/19191