>  기사  >  운영 및 유지보수  >  지속적인 통합 및 지속적인 배포를 위해 Docker를 사용하는 방법

지속적인 통합 및 지속적인 배포를 위해 Docker를 사용하는 방법

WBOY
WBOY원래의
2023-11-08 13:28:551522검색

지속적인 통합 및 지속적인 배포를 위해 Docker를 사용하는 방법

지속적 통합 및 지속적인 배포를 위해 Docker를 사용하는 방법

소프트웨어 개발의 급속한 발전으로 지속적인 통합 및 지속적인 배포는 현대 소프트웨어 개발 프로세스에서 없어서는 안 될 부분이 되었습니다. 컨테이너화 플랫폼인 Docker는 지속적인 통합 및 지속적인 배포 프로세스를 크게 단순화할 수 있습니다. 이 문서에서는 지속적인 통합 및 지속적인 배포를 위해 Docker를 사용하는 방법을 소개하고 구체적인 코드 예제를 제공합니다.

1. 지속적 통합

지속적 통합은 개발자의 코드 수정 사항을 공유 저장소에 자주 병합하고 자주 빌드하고 테스트하는 것을 의미합니다. 지속적인 통합을 위해 Docker를 사용하면 환경 구성과 빌드 프로세스를 단순화하고 개발 효율성을 향상시킬 수 있습니다.

  1. Dockerfile 만들기

Dockerfile은 Docker 이미지를 빌드하는 데 사용되는 스크립트 파일입니다. 프로젝트 루트 디렉터리에 Dockerfile이라는 파일을 만들고 다음 코드 예제를 추가합니다.

# 使用官方的 Node.js 镜像作为基础镜像
FROM node:alpine

# 设置工作目录
WORKDIR /app

# 复制 package.json 和 package-lock.json 到工作目录
COPY package*.json ./

# 安装项目依赖
RUN npm install

# 将项目文件复制到工作目录
COPY . .

# 暴露端口
EXPOSE 3000

# 运行应用
CMD ["npm", "start"]

이 Dockerfile은 Node.js 기반 이미지를 정의하고 프로젝트의 종속성을 이미지와 애플리케이션 파일에 설치한 다음 코드를 작업 디렉터리에 복사합니다. . 마지막으로 포트를 노출하고 애플리케이션을 실행합니다.

  1. Docker 이미지 빌드

프로젝트 루트 디렉터리에서 다음 명령을 사용하여 Docker 이미지를 빌드합니다.

docker build -t my-app .

이 명령은 Dockerfile 파일의 정의에 따라 my-app이라는 이미지를 빌드합니다.

  1. 컨테이너화된 테스트

프로젝트 루트 디렉터리에 docker-compose.test.yml이라는 파일을 만들고 다음 코드 예제를 추가합니다.

version: '3'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    depends_on:
      - db
    command: npm run test
  db:
    image: mongo

이 docker-compose.test.yml 파일은 두 가지 서비스를 정의합니다. 우리의 애플리케이션 서비스인 app 서비스와 데이터베이스 서비스인 db 서비스가 있습니다. 이 파일은 Docker에 두 개의 서비스를 실행하고 앱 서비스에서 테스트 명령을 실행하도록 지시합니다.

프로젝트 루트 디렉터리에서 다음 명령을 사용하여 테스트 컨테이너를 실행합니다.

docker-compose -f docker-compose.test.yml up

이 명령은 앱과 db 서비스를 시작하고 테스트 명령을 실행합니다.

  1. 자동 연속 통합

지속 통합의 목적은 개발자의 코드 변경 사항을 기본 코드에 빠르고 자주 병합하고 자동화된 빌드 및 테스트를 수행하는 것입니다. Jenkins 및 GitLab CI와 같은 도구를 사용하여 자동화된 지속적 통합을 구현할 수 있습니다.

Jenkins를 예로 들어 Jenkinsfile이라는 파일을 만들고 다음 코드 예제를 추가합니다.

pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                sh 'docker build -t my-app .'
            }
        }
        stage('Test') {
            steps {
                sh 'docker-compose -f docker-compose.test.yml up'
            }
        }
    }
}

이 Jenkinsfile은 빌드와 테스트라는 두 단계가 포함된 Jenkins 파이프라인을 정의합니다. 테스트 컨테이너를 시작하려면 빌드 단계에서 docker build命令构建Docker镜像,在测试阶段执行docker-compose 명령을 실행하세요.

Jenkinsfile 파일을 프로젝트의 루트 디렉터리에 추가하고 자동화된 지속적 통합을 위해 Jenkins 서버를 구성합니다.

2. 지속적 배포

지속적 배포는 지속적인 통합이 완료된 후 프로덕션 환경에 코드를 자동으로 배포하는 것을 의미합니다. 지속적인 배포를 위해 Docker를 사용하면 배포 프로세스가 크게 단순화될 수 있습니다.

  1. Docker 이미지 만들기

이전 단계에서 만든 Dockerfile을 사용하여 애플리케이션 코드가 포함된 Docker 이미지를 빌드합니다.

  1. docker-compose.yml 파일 작성

프로젝트 루트 디렉터리에 docker-compose.yml이라는 파일을 만들고 다음 코드 예제를 추가합니다.

version: '3'
services:
  app:
    image: my-app:latest
    restart: always
    ports:
      - 80:3000

이 docker-compose.yml 파일은 Docker에게 다음을 실행하도록 지시합니다. app 서비스를 실행하고 방금 빌드한 my-app 이미지를 기본 이미지로 사용합니다. 또한 포트 매핑 및 기타 서비스를 구성할 수 있습니다.

  1. 애플리케이션 배포

다음 명령을 사용하여 프로덕션 환경에 애플리케이션을 배포합니다.

docker-compose up -d

이 명령은 백그라운드에서 앱 서비스를 시작하고 호스트의 포트 80에 노출합니다.

위는 지속적인 통합과 지속적인 배포를 위해 Docker를 사용하는 방법에 대한 구체적인 단계와 코드 예제입니다. Docker를 통해 환경 구성 및 배포 프로세스를 단순화하고 개발 효율성과 애플리케이션 안정성을 향상시킬 수 있습니다.

위 내용은 지속적인 통합 및 지속적인 배포를 위해 Docker를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.