マイクロサービスの人気に伴い、Docker は、特に複数のアプリケーションをデプロイおよび保守する必要がある開発者にとって、非常に人気のあるコンテナ化テクノロジになりました。この記事では、Docker を使用して Go Web プロジェクトをコンテナ化し、さまざまな環境で迅速なデプロイと運用を実装する方法を紹介します。
序章
Go は、Web アプリケーションの構築に最適な、効率的で最新の急速に成長しているプログラミング言語です。Docker は、アプリケーションを分離性と移植性を備えてどこでも実行できるようにする軽量のコンテナ化テクノロジです。
Go Web プロジェクトを Docker コンテナーで実行するには、次の手順を完了する必要があります。
- Dockerfile を作成して Docker イメージを生成します。
- Docker イメージをビルドします。
- 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 build
Go 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 イメージをデプロイできます。
-
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
-
クラウド プロバイダーのコンテナ プラットフォーム上にサービスまたはタスクを作成し、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 イメージをクラウドにデプロイする方法についても説明します。