ホームページ >運用・保守 >Linuxの運用と保守 >継続的インテグレーションと継続的デプロイメントのために Docker を使用する方法

継続的インテグレーションと継続的デプロイメントのために Docker を使用する方法

WBOY
WBOYオリジナル
2023-11-08 13:28:551549ブラウズ

継続的インテグレーションと継続的デプロイメントのために 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 ファイルは 2 つのサービスを定義します。1 つはアプリケーション サービスである app サービス、もう 1 つはデータベース サービスである db サービスです。このファイルは、2 つのサービスを実行し、アプリ サービスでテスト コマンドを実行するように Docker に指示します。

プロジェクトのルート ディレクトリで、次のコマンドを使用してテスト コンテナーを実行します。

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

このコマンドは、アプリ サービスとデータベース サービスを開始し、テスト コマンドを実行します。

  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 ファイルは、ビルドとテストの 2 つのステージを含む 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 ファイルは、アプリ サービスを実行し、構築されたばかりの my-app イメージを基本イメージとして使用するように Docker に指示します。さらに、ポート マッピングやその他のサービスを構成できます。

    アプリケーションをデプロイする
次のコマンドを使用して、運用環境にアプリケーションをデプロイします。

docker-compose up -d

このコマンドは、アプリケーション サービスを開始します。バックグラウンドを作成し、ホストのポート 80 で公開します。

上記は、継続的インテグレーションと継続的デプロイメントに Docker を使用する方法に関する具体的な手順とコード例です。 Docker を使用すると、環境構成と展開プロセスを簡素化し、開発効率とアプリケーションの信頼性を向上させることができます。

以上が継続的インテグレーションと継続的デプロイメントのために Docker を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。