환경 : Docker + Nginx + Spring boot
linux nginx 설치
apt-get install nginx
nginx 설정 파일 default.conf 생성
upstream app {
server eruna:8080; # WAS 컨테이너의 이름
}
server {
listen 80;
location / {
proxy_pass <http://app>;
}
}
nginx 이미지 빌드하기 위한 Dockerfile 생성
설정한 default.conf 파일을 nginx 컨테이너 내에서 사용하도록 COPY
docker start 후 실행할 명령 CMD 란에 입력
FROM nginx:latest
# 현재 경로에 있는 default.conf를 컨테이너 안 etc/nginx/conf.d/nginx.conf로 복사한다.
COPY default.conf /etc/nginx/conf.d/nginx.conf
CMD ["nginx", "-g", "daemon off;"]
nginx 도커 이미지 빌드
Dockerfile 있는 경로에서
docker build -t nginx__1 .
jar 앱 Dockerfile 생성 및 빌드
FROM openjdk:17-jdk-alpine
ARG JAR_FILE=eruna-0.0.1-SNAPSHOT.jar
COPY ${JAR_FILE} app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar","/app.jar", "—spring.profiles.active=prod"]
docker build -t eruna .
두 도커 컨테이너를 한번에 띄우고, 관련 명령어를 다시 입력하지 않기 위한 docker-compose.yml 생성
version: '3'
services:
eruna:
container_name: eruna
image: "eruna"
ports:
- "8080:8080"
nginx:
container_name: nginx__1
image: "nginx__1
ports:
- "80:80"
depends_on:
- eruna
컨테이너 이름, 이미지, 포트 포워딩 정보 입력
docker 컨테이너 띄우기
docker-compose up
# docker-compose up -d 를 하게되면 백그라운드로 실행
서버 ip 접속
nginx 설정파일 default.conf 수정
upstream app {
server eruna:8080; # WAS 컨테이너의 이름
}
server {
listen 80;
**server_name eruna.site;**
location / {
proxy_pass <http://app>;
}
}
nginx 이미지 빌드
docker build -t nginx__1 .
docker-compose 실행(경로 확인)
docker-compose up -d
eruna.site 접속