환경 : Docker + Nginx + Spring boot

Http

  1. linux nginx 설치

    apt-get install nginx
    
  2. nginx 설정 파일 default.conf 생성

    upstream app {
      server eruna:8080; # WAS 컨테이너의 이름
    }
    
    server {
        listen       80;
    
        location / {
            proxy_pass <http://app>;
        }
    
    }
    
  3. 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;"]
    
  4. nginx 도커 이미지 빌드

    Dockerfile 있는 경로에서

    docker build -t nginx__1 .
    
  5. 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 .
    
  6. 두 도커 컨테이너를 한번에 띄우고, 관련 명령어를 다시 입력하지 않기 위한 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
    

    컨테이너 이름, 이미지, 포트 포워딩 정보 입력

  7. docker 컨테이너 띄우기

    docker-compose up 
    # docker-compose up -d 를 하게되면 백그라운드로 실행
    
  8. 서버 ip 접속

Domain 연결

  1. nginx 설정파일 default.conf 수정

    upstream app {
      server eruna:8080; # WAS 컨테이너의 이름
    }
    
    server {
        listen       80;
        **server_name eruna.site;**
    
        location / {
            proxy_pass <http://app>;
        }
    
    }
    
  2. nginx 이미지 빌드

    docker build -t nginx__1 .
    
  3. docker-compose 실행(경로 확인)

    docker-compose up -d
    
  4. eruna.site 접속