CodeGym /행동 /Docker SELF /각 서비스에 대한 Dockerfile 생성

각 서비스에 대한 Dockerfile 생성

Docker SELF
레벨 23 , 레슨 2
사용 가능

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은 다음 작업을 수행해:

  1. node:14 기본 이미지를 사용.
  2. 작업 디렉토리를 /app으로 설정.
  3. package.jsonpackage-lock.json 파일을 복사.
  4. npm install로 종속성을 설치.
  5. 작업 디렉토리에 모든 프로젝트 파일을 복사.
  6. 애플리케이션에 접근할 수 있도록 3000 포트를 열어.
  7. 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은 다음과 같은 작업을 수행해:

  1. python:3.12 기본 이미지를 사용.
  2. 작업 디렉토리 /app를 설정.
  3. requirements.txt 파일을 복사.
  4. pip install을 사용해 종속성 설치.
  5. 작업 디렉토리에 프로젝트의 모든 파일 복사.
  6. 애플리케이션에 접근할 수 있도록 5000 포트를 엶.
  7. 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으로 이동해서 백엔드가 작동하는지 확인해봐.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION