Docker を使用して Go Web プロジェクトをコンテナ化し、さまざまな環境での迅速なデプロイと運用を実現するにはどうすればよいですか?

マイクロサービスの人気に伴い、Docker は、特に複数のアプリケーションをデプロイおよび保守する必要がある開発者にとって、非常に人気のあるコンテナ化テクノロジになりました。この記事では、Docker を使用して Go Web プロジェクトをコンテナ化し、さまざまな環境で迅速なデプロイと運用を実装する方法を紹介します。

序章

Go は、Web アプリケーションの構築に最適な、効率的で最新の急速に成長しているプログラミング言語です。Docker は、アプリケーションを分離性と移植性を備えてどこでも実行できるようにする軽量のコンテナ化テクノロジです。

Go Web プロジェクトを Docker コンテナーで実行するには、次の手順を完了する必要があります。

  1. Dockerfile を作成して Docker イメージを生成します。
  2. Docker イメージをビルドします。
  3. Docker イメージをコンテナとして実行します。

次に、これらの手順について説明します。

Dockerfile の書き込み

Dockerfile は、Docker イメージを自動的に構築するための命令とパラメーターを含むテキスト ファイルです。Dockerfile を作成するときは、Go Web プロジェクトに必要な環境と依存関係を考慮してください。

基本的な Dockerfile の例を次に示します (Go Web プロジェクトの名前が myapp であると仮定します)。

FROM golang:1.17-alpine AS builder

RUN apk update && apk add --no-cache git ca-certificates tzdata && update-ca-certificates
RUN mkdir /build
WORKDIR /build

COPY . .
RUN go mod download
RUN go build -o myapp

FROM alpine:3.14.2
COPY --from=builder /build/myapp /usr/local/bin/myapp

CMD ["myapp"]

上の例では、最初にgolang:1.17-alpineベースイメージとして使用しました。次に、必要な依存パッケージをいくつかインストールし、タイムゾーンを設定し、COPYコマンドを使用して現在のディレクトリ内のコードをコンテナの/buildディレクトリにコピーします。を実行してgo mod downloadプロジェクトの依存関係をダウンロードし、 を使用してgo buildGo Web プロジェクト バイナリをビルドしますmyapp

alpine:3.14.2最後に、ランタイム イメージとして使用し、myappビルドされたバイナリを/usr/local/bin/ディレクトリにコピーしました。最後に、CMDディレクティブを使用してコンテナを起動するコマンドを指定します。

Dockerイメージを構築する

Dockerfile が書き込まれた後、docker buildコマンドを使用して Docker イメージを構築できます。次のコマンドを実行します。

docker build -t myapp-image .

このうち、-tパラメータにはイメージの名前を指定します。myapp-imageこれは、作成したイメージの名前です。.Dockerfile が配置されているパスを示します。Dockerfile が別のパスにある場合は、対応するパスを使用して上書きしてください.

ビルドが成功したら、docker imagesコマンドを使用してすべてのミラーを一覧表示できます。構築したばかりのイメージが表示されます。

REPOSITORY      TAG             IMAGE ID       CREATED          SIZE
myapp-image     latest          e3e61d272f9d   20 seconds ago   13.6MB

Dockerイメージをコンテナとして実行する

Docker イメージが正常に生成されたので、次のdocker runコマンドを使用してそれをコンテナーとして起動できます。次のコマンドを実行します。

docker run -p 8080:8080 myapp-image

この-pパラメーターは、コンテナー内のポート 8080 をホストのポート 8080 にマッピングすることです。-pパラメーターを変更するだけで、独自のポートを使用できます。コンテナーが起動したら、ブラウザーでアクセスして、http://localhost:8080アプリケーションが実行されているかどうかを確認できます。

イメージをクラウドにデプロイする

アプリケーションを本番環境で実行する準備ができたら、クラウド サービス プロバイダーのコンテナ プラットフォーム (AWS ECS、Google Cloud Container Engine、Azure Container Service など) を使用して Docker イメージをデプロイできます。

  1. Docker イメージを Docker Hub または他のミラー ウェアハウスにプッシュします。

    # 首先需要在 Docker Hub 上注册一个账号,并创建一个名为 myapp 的 repository
    docker login
    docker tag myapp-image <your-docker-username>/myapp:latest
    docker push <your-docker-username>/myapp:latest
    
  2. クラウド プロバイダーのコンテナ プラットフォーム上にサービスまたはタスクを作成し、Docker イメージをプッシュしてそこにデプロイします。

    # AWS ECS 示例
    # 首先需要在 AWS ECS 中创建一个 cluster 和 task definition,然后在该 task definition 中设置镜像名称为:your-docker-username/myapp:latest。
    # 接着创建一个 service,将该 task definition 分配给该 service,即可完成部署。
    

要約する

この記事では、Docker イメージを使用して Go Web プロジェクトをデプロイする方法について説明しました。まずDockerfileを記述し、その中で必要な環境や依存関係を規定し、docker buildコマンドでDockerイメージをビルドし、最後にdocker runコマンドでコンテナとして起動します。さらに、本番環境で使用するために Docker イメージをクラウドにデプロイする方法についても説明します。

おすすめ

転載: blog.csdn.net/weixin_43025343/article/details/131865025