Docker を使用して継続的インテグレーションと継続的デプロイメントを行う方法
ソフトウェア開発の急速な発展に伴い、最新のソフトウェア開発プロセスでは継続的インテグレーションと継続的デプロイメントが不可欠になっています。の一部。コンテナ化プラットフォームとして、Docker は継続的統合と継続的デプロイメントのプロセスを大幅に簡素化できます。この記事では、Docker を使用して継続的インテグレーションと継続的デプロイメントを行う方法を紹介し、具体的なコード例を示します。
1. 継続的インテグレーション
継続的インテグレーションとは、開発者のコード変更を共有リポジトリに頻繁にマージし、頻繁にビルドとテストを行うことを指します。継続的統合に Docker を使用すると、環境構成とビルド プロセスが簡素化され、開発効率が向上します。
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 ベースのイメージを定義し、プロジェクトの依存関係をイメージにインストールし、アプリケーションのファイルとコピーを行います。コードを作業ディレクトリにコピーします。最後に、ポートを公開してアプリケーションを実行します。
プロジェクト ルート ディレクトリで、次のコマンドを使用して Docker イメージを構築します。
docker build -t my-app .
このコマンドは、以下に基づいています。 Dockerfile ファイルの定義、my-app という名前のイメージをビルドします。
プロジェクトのルート ディレクトリに 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
このコマンドは、アプリ サービスとデータベース サービスを開始し、テスト コマンドを実行します。
継続的インテグレーションの目的は、開発者のコード変更をメイン コードに迅速かつ頻繁にマージし、自動化されたビルドとテストを実行することです。 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 を使用すると、デプロイ プロセスを大幅に簡素化できます。
前の手順で作成した Dockerfile を使用して、アプリケーション コードを含む Docker イメージを構築します。
プロジェクトのルート ディレクトリに 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 サイトの他の関連記事を参照してください。