반응형
스파르타 데브캠프를 통해 하루하루 공부한 내용을 정리합니다.
NestJS
오늘은 docker 컨테이너로 서버와 데이터베이스를 실행하는것에 많이 애를 먹었다...
우선 docker의 장점들을 공부하고, 내 프로젝트와 데이터베이스를 docker 컨테이너로 실행했다.
Docker을 사용하는 장점
- 환경 일관성을 보장한다: Docker 컨테이너는 어떤 환경에서도 동일하게 실행되기 때문에, "내 컴퓨터에서는 작동하는데"라는 문제를 방지한다. 개발, 테스트, 프로덕션 환경 간의 불일치로 인해 발생하는 문제들을 크게 줄일 수 있다.
- 빠른 배포 및 확장이 가능하다: Docker 컨테이너는 가볍고 빠르게 시작되기 때문에, 애플리케이션의 배포와 확장이 신속하게 이루어진다. 이는 특히 여러 컨테이너를 사용하는 마이크로서비스 아키텍처에서 큰 장점이다.
- 이식성이 뛰어나다: Docker 컨테이너는 Linux, Windows, MacOS 등 다양한 운영 체제에서 실행될 수 있다. 의존성과 구성을 컨테이너에 포함하기 때문에, 어떤 시스템에서도 동일한 방식으로 실행된다.
- 자원을 효율적으로 사용한다: Docker는 전통적인 가상 머신보다 훨씬 적은 리소스를 사용한다. 운영 체제 수준의 가상화를 활용하기 때문에, 별도의 운영 체제를 실행할 필요가 없어 리소스를 절약할 수 있다.
- 개발 및 운영 과정을 간소화한다: Docker를 사용함으로써 개발부터 배포까지의 과정을 간소화할 수 있다. Dockerfile과 docker-compose.yaml 같은 구성 파일을 통해 인프라를 코드로 관리할 수 있으며, 이는 DevOps 및 CI/CD 파이프라인과 잘 통합된다.
우선 프로젝트 루트경로에 Dockerfile을 작성했다.
# Node.js 공식 이미지를 기반으로 합니다.
FROM node:20
# 애플리케이션 디렉토리를 생성합니다.
WORKDIR /usr/src/app
# 애플리케이션 의존성 파일을 복사합니다.
# package.json과 yarn.lock 파일만 복사하여 캐시를 이용할 수 있도록 합니다.
COPY package.json ./
COPY yarn.lock ./
# 의존성을 설치합니다.
RUN yarn install
# 나머지 애플리케이션 소스를 복사합니다.
COPY . .
# 애플리케이션을 실행할 포트를 지정합니다.
EXPOSE 3000
# 애플리케이션을 실행합니다.
CMD ["yarn", "start:local"]
데이터베이스연결을 위해 Docker로 프로젝트와 mysql 이미지를 둘다 띄우기 위해 docker-compose.yaml도 필요했다.
version: '3.8'
services:
app:
build: .
ports:
- "3000:3000"
depends_on:
- db
db:
image: mysql:8.3.0
ports:
- "3307:3306"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: devcamp_local
MYSQL_USER: devcamp
MYSQL_PASSWORD: devcamp_pass
volumes:
- mysql-data:/var/lib/mysql
volumes:
mysql-data:
docker로 프로젝트를 실행하였을때, 계속 데이터베이스 연결이 안되었었는데, 이유는 컨테이너끼리는 호스트가 localhost가 아니고, "db" 였다.
정말 간단한 내용을 너무 돌고 돌았지만 그래도 조금은 배웠다고 생각하고, 내일은 배포하는것을 목표로 하고 있다.
https://github.com/avo1032/devcamp
GitHub - avo1032/devcamp
Contribute to avo1032/devcamp development by creating an account on GitHub.
github.com
반응형
'Today I Learned > DevCamp' 카테고리의 다른 글
20240309(토) (0) | 2024.03.10 |
---|---|
데브캠프 5일차 (0) | 2024.03.09 |
데브캠프 3일차 (0) | 2024.03.07 |
데브캠프 2일차 (0) | 2024.03.05 |
데브캠프 1일차 (0) | 2024.03.04 |