티스토리 뷰
[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
- oracle 19c 설치
- rest api 단건 다건
- 오블완
- epel repo
- 1종 적성검사 국가건강검진
- 강서 운전면허 시험장
- Oracle Database 19C 설치
- postgresql 외래키
- postgresql on update current_timestamp
- rest api 조회 생성 수정 삭제
- 외래키 인덱스 생성 구문 쿼리
- docker image 경량화
- postgresql 수정시간 자동 갱신
- 스파르타 코딩클럽
- 1종 적성검사
- postgresql 트리거
- 외래키 삭제
- 외래키 생성
- 1종 적성검사 신체검사
- express crud
- postgresql trigger
- 티스토리챌린지
- mariadb 외래키 조회
- dockerignore
- 1종 적성검사 과태료
- rest api crud
- Oracle Database 19c install
- unplugin-auto-import
- epel/x86_64
- docker multi stage build
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |