1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS(EC2)にDockerで起動するSpringBootを構築する際のポート

Last updated at Posted at 2025-04-29

TomcatだけでなくWebサーバーも使いたい! ↓ ↓

ファイルy構成

doker/
 ├ build
 │ └ libs
 │   └ App-0.0.1-SNAPSHOT.jar :point_up:
 ├ image
 │ └ postgres
 │    └ Dockerfile :point_up:
 |
 ├ java
 │ └ Dockerfile :point_up:
 |
 ├ postgres
 │ └ init
 │    └inti.sql :point_up:
 |
 └ docker-compose.yml :point_up:

App-0.0.1-SNAPSHOT.jar

SpringBootで作成した実行するjarファイル。
Tomcatが内蔵されている。

Dockerfile (image/postgres)

FROM postgres:13.2-alpine
ENV LANG ja_JP.utf8

postgreSqlをインストールする。

Dockerfile (java/)

FROM openjdk:21
RUN microdnf install findutils

javaをインストールする。

init.sql

-- DB作成
CREATE DATABASE example;
-- 作成したDBに接続
\c example;
-- テーブル作成
DROP TABLE IF EXISTS usertable;

CREATE TABLE UserTable (
  id BIGINT NOT NULL,
  areaid BIGINT NOT NULL,
  name VARCHAR(100) NOT NULL,
  area VARCHAR(100) NOT NULL,
  address VARCHAR(255) NULL,
  phone VARCHAR(50) NULL,
  update_time DATE NOT NULL,
  PRIMARY KEY (id));


INSERT 
INTO usertable(id, areaid, name, area, address, phone, update_time) 
VALUES (1, 9,'a b c', '九州', '佐賀', '0909999999', CURRENT_TIMESTAMP);

INSERT 
INTO usertable(id, areaid,  name, area, address, phone, update_time) 
VALUES (2, 1,'e  f  g', '関東', '東京', '0909999999', CURRENT_TIMESTAMP);

INSERT 
INTO usertable(id, areaid,  name, area, address, phone, update_time) 

exampleデータベースを作成する。
UserTableテーブルを作成してデータも投入する。

docker-compose.yml

#version: '3'
services:
 # Javaの設定情報
  java:
    # コンテナ名
    container_name: springjar
    build: ./java
    ports:
     - "8080:8080"
    # local参照先:コンテナ展開先
    volumes:
    - ./build/libs:/app
    # コンテナ内のディレクトリ定義
    working_dir: /app
    tty: true

  db:
    container_name: spring_list_post
    build: ./image/postgres
    restart: always
    ports: 
      - "5432:5432"
    volumes:
      - ./postgres/init:/docker-entrypoint-initdb.d
    environment:
      POSTGRES_USER: "postgres"
      POSTGRES_PASSWORD: "postgres"

--- AWSでDockerを起動する場合の注意点 ---

java/ports:8080:8080 の左の8080は、AWSのHTTPのインバウンドと合わせる必要がある。
右の8080は、App-0.0.1-SNAPSHOT.jar に内蔵されたTomcatのポート。

image.png
image.png

なので以下のようにする必要がある。
多分HTTPSを使うときは443にする必要があると思われる。

ちなみにAWSのインバウンドルール(アウトバウンドルールも)設定を変えた場合に
EC2のインスタンスは再起動が不要ですぐに反映される。

※ソース[0.0.0.0/0」はHTTPリクエストで呼び出している、
 IPアドレスは何でもOKという意味。

services:
 # Javaの設定情報
  java:
    # コンテナ名
    container_name: springjar
    build: ./java
    ports:
    #左はAWSのインバウンドルールのHTTPのポート
     - "80:8080"

本題とは直接関係ないが、DockerfileにSpringBootの起動がないので手動で起動する方法は以下

以下を実行して、サービス「java」へ入る。

sudo docker compose exec java bash

以下で起動する。

[ec2-user@ip-172-31-43-145 Docker20250428]$ sudo docker compose exec java bash
bash-4.4# ls
ListPostGo-0.0.1-SNAPSHOT.jar
bash-4.4# java -jar ListPostGo-0.0.1-SNAPSHOT.jar

Docker側でSpringBootのjarを自動起動するには以下のようにDockerfileを書くらしい。

# ベースイメージの指定
FROM openjdk:17

# ワーキングディレクトリの設定
WORKDIR /app

# アプリケーションのJARファイルをコンテナにコピー
COPY build/libs/*.jar app.jar

# ポートの公開
EXPOSE 8080

# アプリケーションの実行コマンド
ENTRYPOINT ["java", "-jar", "app.jar"]

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?