도커 실습을 위해서 단순히 살아있기만 한 컨테이너를 만들어보자.
spring boot의 루트에 위치하는 Dockerfile의 내용
FROM alpine:latest as base
FROM base as build
FROM base AS final
ARG UID=10001
RUN adduser \
--disabled-password \
--gecos "" \
--home "/nonexistent" \
--shell "/sbin/nologin" \
--no-create-home \
--uid "${UID}" \
appuser
COPY hello.sh /bin/hello.sh
RUN chmod +x /bin/hello.sh
USER appuser
ENTRYPOINT [ "/bin/hello.sh" ]
hello.sh의 내용 (마찬가지로 루트 위치에 둔다)
#!/bin/sh
echo "Hello world from $(whoami)!"
echo "service is running..."
while true
do
sleep 60
done
이후 루트에서(Dockerfile이 위치한 곳에서) 아래 도커 명령어를 수행해준다.
docker compose build --no-cache
docker compose up
그러면 서버가 러닝 중이라는 echo가 출력되고 영원히 실행은 되어있을 것이다.

종료를 위해서는 ctrl c 를 눌러주자.
그러면 이 컨테이너가 http 요청을 처리하기 위해서는 어떻게 해야할까?
- 컨테이너 안에 Spring boot 어플리케이션이 위치해야한다.
- spring boot가 내부포트 (예:8080)을 listen 해야 한다.
- Dockerfile에서 그 포트를 EXPOSE해준다
- docker-compose에서 그 포트를 매핑해야한다.
Spring Boot App
↓
Tomcat / Netty
↓
8080 포트 listen
/*
docker-compose.yml의 내용
services:
app:
ports:
- "8080:8080"
*/
↓
HTTP POST 처리 가능
예제는 아래에.
spring boot 서버를 도커 컨테이너 안에서 실행하기 (feat 자동 빌드)
'┝ 웹서비스 인프라' 카테고리의 다른 글
| [docker] Web server failed to start. Port 8080 was already in use (0) | 2026.01.14 |
|---|---|
| [docker newbie] windows docker 설치, docker란? 도커 튜토리얼 (0) | 2026.01.09 |
| Docker란 (1) | 2023.09.18 |
| [amazon] ec2와 s3의 차이점 (0) | 2023.09.01 |
| [ubuntu] '~'와 '/' 중 root 디렉토리는? (0) | 2023.09.01 |