はじめに
Dockerを使用してApacheとTomcatのコンテナを作成し,ローカルサーバとして動かすまでにメモしたものです.
内容については後から直していきます.
参考サイトについては各ページのタイトルじゃなくて自分でわかりやすいように変えてます.
環境
M2 Macbook Air
DockerでapacheとTomcatのコンテナを作成
作成するにあたって
参考サイト[1]先である通りに作成していたところ,http.confファイルを各サーバからコピーしてくる旨が書いてある.しかし,サーバが無いのでホストのMacbookにあるhttp.confを使用したところ,エラーでコンテナを作成できない.
そんな時は一度公式のimageを使用してコンテナを立ち上げて,その中にあるhttp.confファイルをコピーすると良い
docker pull httpd:2.4
自分はこれで1週間近くapacheのコンテナを立ち上げることができなかった...
メモ
- docker loadコマンドが使えない
$cat /etc/group | grep docker
上記のコマンドでユーザにアクセス権限があるかを確認
docker:x:126:username
が表示されたら問題なし
それ以外(usernameの表記なしなど)の場合は
$sudo usermod -aG docker 'username'
$newgrp docker
でユーザをにアクセス権限を追加
- ログ監視のコマンド
docker events --filter container=httpd_sample
実行停止するまで,dockerコマンドを使用した際のログを表示していく
—filterで対象を指定できる
- runコマンド
docker run --name httpd_smaple -p 80:80 -dit httpd:sample
参考サイトでは上記のrunコマンドを使用したが,エラーは出ないのにexit code(1)でコンテナが立ち上がった後にすぐ終了してしまう
docker run --name httpd_sample -p 80:80 -dit -p 80:80 httpd:sample bash
と最後に ”bash” を入れる必要がある
- ApacheとTomcatの連携方法
httpd-proxy.confのlocalhostをIPアドレスに変えるだけでは連携できない
tomcat側のserver.xmlファイルからポートを指定する必要がある
- Dockerfileからbuildしたhttpd(Apache)コンテナがrunできない
docker run -dit -p 80:80 httpd:2.4
上記のコマンドで実行したら問題なくコンテナをrunできる
- httpd.conf(httpd-proxy.conf)でProxyPassを設定
ProxyPassを設定するとそのディレクトリを指定するだけでindex.htmlが表示される
ex.)
webapps/
├ sample/
│ ├ index.html
│ └ index.css
│
└ test/
├ index.html
└ index.css
となっている時,本来は
“http://localhsot/sample/index.html” | “http://localshot/test/index.html”
と記入するところを
”http://localshot/sample” | “http://localhost/test”
だけでそれぞれのindex.htmlが表示される
/sampleや/testは変更可能
===== 余談 =====
~/.vimrcファイルで
:syntax on
と記載するとデフォルトで使用されているコメントアウトの色を変える機能をオンにできる
===== 疑問 =====
- ProxyPassとProxyPassReverseの違いは何?
具体的は挙動も知っておきたい