도커 nginx, spring boot 프로젝트 연동 배포 해보기

728x90
docker pull nginx

nginx 이미지 다운로드

 

docker run -d --name nginx-server -p 80:80 --restart nginx

nginx 이미지 실행합니다.

 

docker cp nginx-server:/etc/nginx/nginx.conf /home/dev/nginx/nginx.conf
docker cp nginx-server:/etc/nginx/conf.d/default.conf /home/dev/nginx/conf.d/default.conf

nginx.conf, default.conf 파일 작성이 귀찮기 때문에 이미 만들어진 파일을 원하는 경로로 복사합니다. 저는 /home/dev/nginx/ 로 복사했습니다.

 

docker stop nginx-server
docker rm nginx-server

기존 nginx 컨테이너 삭제

 

sudo ufw allow 80/tcp
sudo ufw reload

저는 ufw 방화벽 사용중이기 때문에 80포트를 허용해줍니다.

 

docker network create app-network

컨테이너간 통신을 하기 위해 

사용자 정의 네트워크 생성합니다. 

 

docker run -d --name spring-app --network app-network -p 8888:8888 spring-boot-image

8888 포트로 스프링 부트 프로젝트를 실행합니다. 사용자 정의 네트워크도 연결해줍니다.

저는 image를 미리 만들어두었습니다.

 

/home/dev/nginx/conf.d/default.conf

server {
    listen 80;
    server_name localhost;

    location / {
        proxy_pass http://spring-app:8888;
    }
}

/home/dev/nginx/conf.d/default.conf 를 수정하여 

proxy_pass http://spring-app:8888; 추가합니다. 컨테이너 이름과 포트입니다.

 

docker run -d --name nginx-server --network app-network -p 80:80  --restart unless-stopped 
-v /home/dev/nginx/nginx.conf:/etc/nginx/nginx.conf 
-v /home/dev/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf 
nginx

nginx 이미지도 다시 컨테이너로 실행해줍니다. 볼륨으로 아까 복사해두었던 conf 파일들 지정해줍니다.

--restart unless-stopped 로 시스템이 다시 시작될 때 자동으로 nginx-server가 실행되게 해줍니다.

--network app-network 사용자 네트워크도 연결해줍니다.

docker exec -it nginx-server nginx -t
docker exec -it nginx-server nginx -s reload

설정파일에 문제가 없는지 테스트 및 리로드 합니다.

 

docker network inspect app-network

// 다른 추가방법
docker network connect app-network spring-app
docker network connect app-network nginx-server

네트워크에 연결된 컨테이너 확인가능 합니다.

 

docker ps

nginx 와 spring-app 컨테이너가 정상동작 중인지 확인 후 

http://localhost 접속하여 정상적속 확인합니다.

반응형