docker-compose로 SprongBoot + MySql DB서버 구동 Nginx 추가

devdo·2022년 2월 23일
0

Docker

목록 보기
9/9
post-thumbnail

https://velog.io/@mooh2jj/docker-compose로-SprongBoot-JPA-MySql-DB-서버만들기

.env

MYSQL_ROOT_HOST=%
MYSQL_ROOT_PASSWORD=1234
MYSQL_DATABASE=docker

SPRING_DATASOURCE_USERNAME=root

docker-compose에 nginx 컨테이너 추가

전에 한 docker-compose 파일에 더해서 nginx 컨테이너를 추가해봤습니다.

docker-compose.v2.yml(nginx 추가)

version: '3.8'
services:
  web:
    container_name: nginx
    image: nginx
    ports:
      - "80:80"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
    depends_on:
      - application
    networks:
      - test_network

  database:
    container_name: mysql_db
    image: mysql:8.0.22
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 1234
      TZ: Asia/Seoul
    ports:
      - "3306:3306"
    volumes:
      - /mysql/conf.d:/etc/mysql/conf.d
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql  # init.sql을 컨테이너 내부의 초기화 디렉토리로 복사
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    networks:
      - test_network

  application:
    container_name: docker-test-spring
    restart: on-failure
    build:
      context: ./
      dockerfile: Dockerfile
    ports:
      - "8080:8080"
    environment:
      SPRING_DATASOURCE_URL: jdbc:mysql://mysql_db:3306/${MYSQL_DATABASE}?useSSL=false&allowPublicKeyRetrieval=true
      SPRING_DATASOURCE_USERNAME: ${SPRING_DATASOURCE_USERNAME}
      SPRING_DATASOURCE_PASSWORD: ${MYSQL_ROOT_PASSWORD}
    depends_on:
      - database
    networks:
      - test_network

networks:
  test_network:

  • docker ps 확인

  • nginx 파트
  web:
    container_name: nginx
    image: nginx
    ports:
      - "80:80"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
    depends_on:
      - application
    networks:
      - test_network

volumes으로 nginx/conf.d 디렉토리를 마운트하였습니다. nginx가 실행될 때 외부에서 이 경로로 서칭을 할 수 있게 된 겁니다.


nginx conf파일 설정

nginx/conf.d/app.conf

docker-compose를 실행하기 전 app.conf을 만들어주어야 합니다. 이름은 상관없습니다.

server {
    listen 80;
    access_log off;

    location / {
        proxy_pass http://application:8080;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Forwarded-Host $server_name;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

이제 docer-compose에 등록된 application 들은 Nginx 80포트를 통해서 확인할 수 있게 되었습니다. url에서 확인해보면 됩니다.

get : {nginx ip}/blog

부러우저 확인(로컬)



참고

소스출처 : https://github.com/mooh2jj/docker-compose-test.git

https://joont92.github.io/docker/docker-compose%EB%A1%9C-nginx-spring-boot-mysql-%EA%B5%AC%EC%84%B1%ED%95%98%EA%B8%B0/

profile
배운 것을 기록합니다.

0개의 댓글