apacheローカルのapache+tomcatで動いているアプリケーションをdockerに乗っけてみました。SSL込みで設定していきました。Macを使用しています。成果物をこちらのリポジトリにあげておきます。動作を検証するまとめApacheApacheでVirtualHostで3つのFQDNの通信を扱うようにしていきます。SSLの設定も行っていきますが、その際にはmkcertを使用してローカル認証局と鍵の作成を行います。httpd.confの作成SSL通信を有効にするため、conf/httpd.confをベースのdockerイメージからコピーしてきて変更を加えていきます。以下の項目のコメントアウトを外します。Moduleを使っていきたいと思うので下記のコメントアウトも外します。tomcatへの通信をhttpで行うために必要なモジュールもついでに外します。modules/mod_proxy_http.so各VirtualHostsで共有の鍵を使いたいので、httpd-ssl.confに鍵の設定をして、httpd-vhosts.confの設定がhttpd-ssl.confより後にくるように記述の位置を変えます。下記のようになるはずです。conf/extra/httpd-vhosts.conf...鍵の作成mkcertを使って認証局+鍵の作成を行っていきます。Goで作られているらしいので興味ある方はぜひ。generateされた下記のファイル2つをdockerコンテキストに配置httpd-ssl.confの設定httpd-ssl.confの下記をコメントアウトします。今回は先程生成した2つのpemファイルを利用するためです。"/usr/local/apache2/conf/server.key"そして下記のように記述を加えます。"/usr/local/apache2/conf/localhost+2-key.pem"httpd-vhosts.confの設定tomcatのコンテナへajpで通信するように設定を加えます。通常は静的ファイルはDocumentRoot配下を参照させて、それ以外はtomcatと通信という形になるかと思いますが、今回はとりあえず全部tomcatコンテナに流します。下記のような形としました。VirtualHostのセクション内です。本題とは関係ないですが自分のPCからアクセスできるように、/private/etc/hostsに記述しておきます。設定ファイルと鍵、httpのドキュメントをコンテナにCOPYしポート80番と443番をListenします。イメージはなるべく軽くしたいのでDebian系OSがベースのものでなく、alpineベースのものを選んでいます。443httpdがうまく動いているかテストdocker-compose.yamlを作成し、下記のようにhttpdの設定を宣言します。"9443:443"以下のURLにSSLでアクセスできることが確認できました。SpringBootで作成した簡単なアプリケーションをコンテナに乗っけてみます。黒べこ本のサンプルに載っているTodoアプリです。最初にkotlinのアプリケーションのbuild.gradleに変更を加えていきます。今回はwarを作成してそれをデプロイするため、下記のように記述を加えていきます。SpringBoot組み込み以外のTomcatを利用するときに必要みたいです}次に、warファイルをTomcatに展開するにあたって必要らしいServletInitializerというclassをエントリポイントのあるclassと同パッケージに配置します。下記のような内容のclassです。}}Dockerfileの作成Warに固める作業自体はローカルのIntelliJで行います。Dockerコンテキスト配下にソースを置いてそこに成果物を固めて良いのですが、今回は単純にcopyしてコンテキスト配下に盛ってきたいと思います。いちいちその作業をやるのが面倒くさいのでMakefileを作ります。AutoDeployしてDockerで都度都度検証したい場合には、Volumeマウントして動かしたほうが良いとは思います。makefileに記述したように、warはtomcat/build配下に格納するので、そのwarをdockerの方にcopyするだけです。Dockerfileは下記のようになります。tomcat側もイメージは軽くしたいのでalpineを使います。SpringBootは環境変数からコンテキストパスを設定できるのでしておきます。SpringBoot1.x系は別の変数名になるらしいので注意です。buildしてみます。[https://one.cool.com:9443/todo]にアクセスしてみるとアプリケーションの画面が表示されました。"8080:8080"表示された画面まとめアプリケーションをBuildするところからDockerでできるように今度する。マルチステージビルドが使えそう。以下の資料を読んで理解を深めた。practices月別アーカイブはてなブログをはじめよう!jrywm121さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。