새소식

Linux/Ubuntu

Ubuntu - Docker + nginx + spring boot 띄우기

  • -
오늘의 명언

# 필수 패키지 설치 sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
# Docker GPG key 추가 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Docker 저장소 추가 echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Docker 설치 sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io
# Docker 서비스 시작 및 자동 시작 설정 sudo systemctl start docker sudo systemctl enable docker

# Docker Compose 다운로드 및 설치 sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep -Po '"tag_name": "\K.*?(?=")')/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 실행 권한 추가 sudo chmod +x /usr/local/bin/docker-compose # 설치 확인 docker-compose --version

# Git 설치 sudo apt-get install git # 프로젝트 clone git clone my-project

# 베이스 이미지 OpenJDK 21 slim 버전으로 설정 FROM openjdk:21-jdk-slim # 작업 디렉토리를 /app으로 설정 WORKDIR /app # Gradle Wrapper 및 설정 파일들을 컨테이너의 /app 디렉토리로 복사 COPY gradlew build.gradle settings.gradle /app/ COPY gradle /app/gradle # 소스 코드 및 리소스 파일들을 컨테이너의 /app/src 디렉토리로 복사 COPY src /app/src # gradlew 파일에 실행 권한 부여 RUN chmod +x gradlew # Gradle을 사용하여 프로젝트를 빌드 RUN ./gradlew build # 컨테이너에서 외부로 노출할 포트 설정 EXPOSE 8080 # Spring Boot 애플리케이션 실행 CMD ["java", "-jar", "/app/build/libs/my-project.jar"]

server { listen 80; # 80번 포트에서 요청 수신 server_name my-domain.com; # 서버 도메인 이름 location / { proxy_pass http://spring:8080; # 요청을 Spring 서비스로 프록시 proxy_set_header Host $host; # 요청의 호스트 헤더 설정 proxy_set_header X-Real-IP $remote_addr; # 클라이언트의 실제 IP 설정 } }

version: '3' # Docker Compose 버전 services: nginx: # Nginx 서비스 image: nginx:latest # 최신 Nginx 이미지 volumes: - ./nginx/default.conf:/etc/nginx/conf.d/default.conf # 설정 파일 매핑 ports: - "80:80" # 호스트:컨테이너 포트 매핑 depends_on: - spring # Spring 서비스 이후 시작 spring: # Spring 서비스 build: context: ./my-project # 빌드 컨텍스트 dockerfile: Dockerfile # Dockerfile 경로 ports: - "8080:8080" # 호스트:컨테이너 포트 매핑

~.ssh/project ├── my-project ├── Dockerfile └── ...(기타 프로젝트 파일) ├── nginx └── default.conf └── docker-compose.yml

cd ~.ssh/project docker-compose up --build
반응형

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.