티스토리 뷰
[Docker] express 서버 + db 구축하기 이전 포스트에서 express 서버 이미지를 생성하였다.
이제 해당 서버와 db를 연동하여 마무리를 해보자.
express 서버 환경 구성
도커로 여러 사이트에 배포시에 사이트 마다 포트 정보가 달라질 수 있다.
그러기 위해서는 유연하게 포트 설정을 할 수 있게 해야하는데, 이럴 때 사용하는 것이 환경변수 이다.
dotenv 라이브러리를 이용하여 개발 및 운영환경에 사용 할 환경 변수를 설정 해놓는다.

development.env
## Environment ##
NODE_ENV=development
## Server ##
PORT=8010
HOST=localhost
## DB ##
DB_HOST=localhost
DB_PORT=5432
DB_NAME=postgres
DB_USER=postgres
DB_PWD=postgres1!
production.env
실제 배포용 환경변수 파일은 Docker Compose에서 설정 할 것이므로 크게 의미는 없으나, 해당 파일에 환경 변수를 그대로 사용하는 거면 꼭 필요하다.
## Server ##
PORT=8010
HOST=localhost
## DB ##
DB_HOST=db
DB_PORT=5432
DB_NAME=postgres
DB_USER=postgres
DB_PWD=postgres1!
EnvVars.ts
각 환경 변수에 대한 객체 정보이다. 서버 구동 및 DB 연결 시 해당 객체를 import 해서 사용한다.
export default {
    NodeEnv: process.env.NODE_ENV ?? '',
    Port: process.env.PORT ?? 0,
    WsPort: process.env.WS_PORT ?? 0,
    Db: {
        Host: process.env.DB_HOST ?? '',
        Port: process.env.DB_PORT ?? 0,
        Name: process.env.DB_NAME ?? '',
        User: process.env.DB_USER ?? '',
        Pwd: process.env.DB_PWD ?? '',
    },
} as const
위와 같이 환경변수로 서버 및 DB 구동 준비가 되었으면, Docker Compose를 통해 유연하게 환경변수를 바꾸어 사용할 준비가 된 셈이다.

Docker Compose 작성
Docker Compose 관련 내용은 공식문서 참조.
docker-compose.yaml
networks:
  my-network:
    name: my-network
    driver: bridge
volumes:
  v-portainer:
  v-postgres:
services:
  my-postgres:
    container_name: my-postgres
    image: postgres
    ports:
      - 5432:5432
    environment:
      - POSTGRES_PASSWORD=postgres1!
      - POSTGRES_USER=postgres
      - POSTGRES_DB=postgres
    volumes:
      - v-postgres:/var/lib/postgresql/data \\
    restart: always
    networks:
      - my-network
  my-express-image:
    container_name: my-express-image
    image: xm-union-manage
    environment:
      - PORT=8010
      - DB_HOST=my-postgres
      - DB_PORT=5432
      - DB_NAME=postgres
      - DB_USER=postgres
      - DB_PWD=postgres1!
    ports:
      - 8010:8010
    depends_on:
      - my-postgres
    restart: always
    networks:
      - my-network
주요 설정
- network
- 컨테이너간 통신을 하기 위해서 필요한 작업.
- 같은 네트워크인 경우 service 명을 호스트 명으로 사용하여 접근이 가능하다.
 
my-express-image: ... environment: - PORT=8010 - DB_HOST=my-postgres - network 요소를 생성하여 db와 server를 하나의 network로 묶어준다.
 
 - 컨테이너간 통신을 하기 위해서 필요한 작업.
 - postgres image
- postgres DB를 이용하였다.
 - 세부 환경 설정은 공식문서 참조.
 
 - environment
- 서버에서 사용 했던 환경변수를 Docker Compose에서 설정해준다.
 - Compose file 내용만 바꾸면 원하는 정보로 얼마든지 바꿀 수 있다.
 
 

- 
- 선행적으로 생성되어야 할 컨테이너를 지정할 때 사용
 - 서버는 DB가 생성된 후 생성되어야 하므로 아래와 같이 지정 하였음
 
 

*️⃣ 포트 변경 하기
Server Port or DB Port 를 변경해야 할 일이 종종 있다. 그럴 때는 바인딩 포트 정보만 바꿔주면 된다.

위의 예시는 postgres DB 포트를 변경한 예시이다.
5432 → 5434 포트로 변경 하였다.
<host port>:<container port> 구조로 host port 정보만 바꿔주면 된다.
컨테이너 구동
docker-compose.yaml 파일을 이용하여 최종적으로 컨테이너를 구동해보자.
해당 파일이 있는 위치에서 docker compose 명령어로 컨테이너를 생성한다.
$ ls
... docker-compose.yaml ...
$ docker compose up -d
마치며
위와 같은 메커니즘을 이해하고 있으면 얼마든지 응용이 가능하다.
SPA App을 docker compose와 묶어서 Front-end, Back-end 프로세스를 한번에 올릴 수도 있다.
SPA App 배포 설정은 여기를 참조.
끝 🫰
- Total
 
- Today
 
- Yesterday
 
- unmounted composable
 - 외래키 삭제
 - nuxt3 structure
 - nuxt3 quasar 설정
 - 스마트피싱보호_캠페인
 - dockerignore
 - Oracle Database 19C 설치
 - vue onunmounted
 - unmounted document.addlistener
 - 스파르타 코딩클럽
 - vue 타이머 해제
 - nuxt3 프로젝트 설정
 - vue watch 대체
 - nuxt3 eslint prettier 설정
 - unmounted setinterval
 - docker multi stage build
 - docker mssql create database
 - docker mssql 이미지 생성
 - vue unmounted
 - 티스토리챌린지
 - oracle 19c 설치
 - docker image 경량화
 - vue watch 위험성
 - vue 리팩토링
 - vue 이벤트 해제
 - vue watch 문제점
 - 오블완
 - docker mssql
 - Oracle Database 19c install
 - unplugin-auto-import
 
| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | 
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | 
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | 
| 30 | 
