profiles = local 에 맞는 application.yml
값을 미리 설정해야한다.
FROM openjdk:17
ARG JAR_FILE=build/libs/*.jar
ARG SPRING_PROFILE=local
COPY ${JAR_FILE} anifriends.jar
ENV spring_profile=${SPRING_PROFILE}
ENTRYPOINT java -jar anifriends.jar \
--spring.profiles.active=${spring_profile}
profiles
에 따라 설정파일이 바뀌게 설정했다.
/nginx
경로에 생성한다. 이 경로와 docker-compose의 nginx volume 경로를 맞춰줘야한다.
FROM nginx:latest
# 가상 공간의 nginx 기본 설정파일 삭제 후 작성한 설정파일로 대체
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/conf.d
nginx 설정 파일을 생성한다.
/nginx
경로에 생성한다. 이 경로와 docker-compose의 nginx volume 경로를 맞춰줘야한다.
# 이벤트 블록을 설정합니다.
events {}
# NGINX의 HTTP 블록을 엽니다. HTTP 블록은 웹 서버의 모든 HTTP 기능을 정의합니다.
http {
# 서버 블록을 정의합니다. 이 서버 블록은 클라이언트의 요청을 받아들이고 처리합니다.
server {
# 포트 80에서 들어오는 HTTP 요청을 수신할 것임을 나타냅니다.
listen 80;
# 'localhost' 도메인으로 들어오는 요청을 처리할 것임을 나타냅니다.
server_name localhost;
# 모든 경로('/')에 대한 요청을 받아들이는 location 블록입니다.
location / {
# NGINX가 받은 모든 요청을 'http://backend:8080'으로 프록시하여 처리하도록 지시합니다.
proxy_pass http://backend:8080;
# 프록시된 요청에 'Host' 헤더를 추가하여 백엔드 서버에 전달합니다.
proxy_set_header Host $host;
# 프록시된 요청에 클라이언트의 실제 IP 주소를 'X-Real-IP' 헤더에 추가하여 백엔드 서버에 전달합니다.
proxy_set_header X-Real-IP $remote_addr;
# 프록시된 요청에 클라이언트의 원래 IP 주소를 'X-Forwarded-For' 헤더에 추가하여 백엔드 서버에 전달합니다.
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 프록시된 요청에 클라이언트가 사용하는 프로토콜(HTTP 또는 HTTPS)를 'X-Forwarded-Proto' 헤더에 추가하여 백엔드 서버에 전달합니다.
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
version: '3'
services:
backend:
container_name: backend
build: . # springboot Dockerfile 경로
ports:
- "8080:8080"
networks:
- anifriends
nginx:
image: nginx:latest
volumes:
- ./nginx/:/etc/nginx/ # 왼쪽이 로컬 경로, 오른쪽이 도커 컨테이너 내부 경로
ports:
- 80:80
depends_on: # 빌드 시작 순서를 정해주는 옵션
- backend
networks:
- anifriends
networks: # 컨테이너를 연결할 네트워크
anifriends:
docker-compose.yml
경로에서 명령어를 실행한다.
docker compose up --build
실행 후 localhost:80/api~
경로에 접속하면 원하는 API를 실행할 수 있다.