3.1 프론트엔드용 Dockerfile 생성 (ReactJS)
이번 단계에서는 우리의 멀티컨테이너 애플리케이션의 세 가지 서비스: ReactJS 프론트엔드, Python (Flask) 백엔드, PostgreSQL 데이터베이스에 대해 Dockerfile을 만들 거야. Dockerfile은 각 서비스에 대한 Docker 이미지를 생성하는 명령어를 정의해.
프론트엔드 디렉토리 안에 Dockerfile이라는 파일을 만들어:
Terminal
cd frontend
touch Dockerfile
프론트엔드용 Dockerfile의 내용:
Terminal
# node 기본 이미지를 사용
FROM node:14
# 작업 디렉토리 설정
WORKDIR /app
# package.json과 package-lock.json 복사해서 종속성 설치
COPY package*.json ./
# 종속성 설치
RUN npm install
# 프로젝트의 나머지 파일 복사
COPY . .
# 포트 3000 설정
EXPOSE 3000
# 애플리케이션 실행
CMD ["npm", "start"]
이 Dockerfile은 다음 작업을 수행해:
node:14
기본 이미지를 사용.- 작업 디렉토리를
/app
으로 설정. package.json
과package-lock.json
파일을 복사.npm install
로 종속성을 설치.- 작업 디렉토리에 모든 프로젝트 파일을 복사.
- 애플리케이션에 접근할 수 있도록
3000
포트를 열어. npm start
로 애플리케이션을 실행.
3.2 백엔드(Flask)용 Dockerfile 생성
backend 디렉토리에 Dockerfile을 만들어:
Terminal
cd backend
touch Dockerfile
백엔드용 Dockerfile의 내용:
dockerfile
# python 기본 이미지를 사용
FROM python:3.12
# 작업 디렉토리 설정
WORKDIR /app
# requirements.txt를 복사해서 종속성 설치
COPY requirements.txt ./
# 종속성 설치
RUN pip install --no-cache-dir -r requirements.txt
# 프로젝트의 나머지 파일들 복사
COPY . .
# 포트 5000 설정
EXPOSE 5000
# 애플리케이션 시작
CMD ["python", "run.py"]
이 Dockerfile은 다음과 같은 작업을 수행해:
python:3.12
기본 이미지를 사용.- 작업 디렉토리
/app
를 설정. requirements.txt
파일을 복사.pip install
을 사용해 종속성 설치.- 작업 디렉토리에 프로젝트의 모든 파일 복사.
- 애플리케이션에 접근할 수 있도록
5000
포트를 엶. python run.py
로 애플리케이션 시작.
3.3 데이터베이스(PostgreSQL)를 위한 Dockerfile 생성
PostgreSQL 데이터베이스를 위해 우리는 공식 이미지를 사용할 거야. 그래서 직접 Dockerfile을 만들 필요는 없어. 대신, PostgreSQL은 docker-compose.yml
을 통해 설정할 거야.
3.4 Docker 이미지 빌드 및 테스트
프론트엔드와 백엔드를 위한 Dockerfile을 만든 후, 이를 빌드하고 테스트하는 게 중요해.
프론트엔드 Docker 이미지 빌드:
Terminal
cd frontend
docker build -t task_management_frontend .
백엔드 Docker 이미지 빌드:
Terminal
cd ../backend
docker build -t task_management_backend .
컨테이너 작업 확인:
프론트엔드 컨테이너 실행:
Terminal
docker run -p 3000:3000 task_management_frontend
백엔드 컨테이너 실행:
Terminal
docker run -p 5000:5000 task_management_backend
http://localhost:3000으로 이동해서 프론트엔드가 작동하는지 확인하고, http://localhost:5000으로 이동해서 백엔드가 작동하는지 확인해봐.
GO TO FULL VERSION