今までDockerを触ったことがなかったので、
NginxとSpriing bootをDockerで作り、連携させることにしました。
基本的にはサーバー上でNginxとSpriing bootを連携させる手順とほぼいっしょであることが分かりました。
【前提】
Eclipseなどでspring bootのjarファイルを作成していること。
手順
1.以下のようにフォルダ構成を作成する。
【Dockerfileのフォルダ構成】
・テスト用のサーバで上記のように各フォルダを作成する。
・Nginxのデフォルトのconfファイル(/etc/nginx/nginx.conf)をコピーし、nginx.conf.tmpを作成(後で編集する)
・ローカルで作成したjarファイルを「/home/ec2-user/springboottest/jar」配下にコピー
2. Nginx用のDockerfile作成(/home/ec2-user/nginxtest/Dockerfile)
FROM nginx:1.17 # nginxのインストール RUN apt-get update # vimのインストール RUN apt-get install -y vim RUN rm /etc/nginx/nginx.conf COPY etc/nginx/nginx.conf.tmp /etc/nginx/nginx.conf
※vimはインストールしなくても問題ないが、コンテナ内に入った時にファイルを確認するためにインストール
3. ngnix用のconfファイル作成(nginx.conf.tmp)
デフォルトのconfファイルをコピーし、赤字の行を修正
server { listen 80 default_server; listen [::]:80 default_server; server_name _; #root /usr/share/nginx/html; ←ここをコメント # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { proxy_pass http://app:8080/; ←ここ }
「app:8080」の「app」は任意の名称を設定。
ここが大事なポイントの1つ。
4. ローカルで作成したjarファイルを以下にコピー
・/home/ec2-user/springboottest/jar
5. spring boot用のDockerファイルを作成(/home/ec2-user/springboottest/Dockerfile)
FROM amazoncorretto:11.0.3 ADD jar/test.jar /root/test.jar CMD java -jar /root/test.jar
6. Dockerイメージを作成
ようやくここからDockerイメージの作成が始まります。。
6-1. Nginx用のイメージを作成
# cd /home/ec2-user/ngnixtest
# docker build -t nginx17 .
「Successfully」が出力されることを確認
6-2. Nginx用イメージが作成されたことを確認
# docker images
6-3. spring boot用のイメージを作成
# cd /home/ec2-user/springboottest
# docker build -t spring2019 .
※2019年に作ったので、分かりやすく2019にしました
「Successfully」が出力されること確認
6-4. spring boot用のイメージが作成されたことを確認
# docker images
7. Dockerのコンテナ作成 & 起動
spring boot用のコンテナとnginx用のコンテナを連携させるため、spring boot用のコンテナを先に立ち上げる。
※順番が逆でも大丈夫でした。。
7-1. spring boot用のコンテナ作成&起動
# docker run -d --name spring-container -p 8080:8080 spring2019
7-2. spring boot用のコンテナ作成&起動の確認
# docker ps -a
7-3. nginx用のコンテナ作成&起動
# docker run -d --link spring-container:app --name nginx-container -p 80:80 nginx17
「app」はngnix用のconfファイル作成に書いた「proxy_pass http://app:8080/;」と同じ文字列にする。
7-4. nginx用のコンテナ作成&起動の確認
# docker ps -a
7-5. 動作していることをWebブラウザから確認
以上になります。
進化系記事
2024.03.21 追記
dockerコマンドの--linkオプションは非推奨のため、docker-composeコマンドなど他のコマンドを利用した方が良さそうです。
参考
以下を見て、Dockerを理解しました。
ちょっとオタク系の感じがしてどうかな?と思ったのですが、内容は簡潔で分かりやすかったので、けっこうお勧めです。
以下のシリーズの①、③も合わせて購入しました。