ホームページ  >  記事  >  バックエンド開発  >  Docker が golang プロジェクトをデプロイする

Docker が golang プロジェクトをデプロイする

PHPz
PHPzオリジナル
2023-05-15 11:34:371501ブラウズ

クラウド コンピューティングとマイクロサービス アーキテクチャの台頭により、コンテナ テクノロジは開発者からますます注目を集めています。 Docker は、現在最も人気のあるコンテナ化ソリューションの 1 つです。この記事では、Docker を使用して Golang プロジェクトをデプロイし、アプリケーションの管理とデプロイをより便利にする方法を紹介します。

1. Docker の基礎知識

Docker は、アプリケーションと必要な依存関係をコンテナーにパッケージ化できる軽量のコンテナー エンジンで、さまざまな環境に簡単にデプロイできます。一般に、Docker イメージには、アプリケーション コードと必要な依存ライブラリ、オペレーティング環境などが含まれています。このイメージに基づいてコンテナを作成し、そのコンテナ内でアプリケーションを実行できます。

Docker には、理解する必要のある概念がいくつかあります。

  1. Docker イメージ: Docker イメージは読み取り専用のファイル システムと考えることができます。これには、アプリケーションのコードと必要な依存関係が含まれています。
  2. Docker コンテナ: Docker コンテナは、Docker イメージから作成された実行可能なインスタンスです。コンテナは起動、停止、削除が可能で、コンテナ内の状態の保存や復元も可能です。コンテナ内で実行されているアプリケーションは、コンテナ内のファイル システムおよびネットワーク リソースにアクセスできます。
  3. Docker ウェアハウス: Docker ウェアハウスは、Docker イメージが集中的に保存される場所です。このウェアハウスから必要なイメージを取得することも、作成したイメージをウェアハウスにプッシュすることもできます。

2. 準備

Golang プロジェクトのデプロイを開始する前に、まず Docker と Golang をインストールする必要があります。 Docker のインストールについては、公式ドキュメントを参照してください。ここでは詳しく説明しません。 Golang のインストールも比較的簡単で、公式 Web サイトから対応するシステムのバイナリ パッケージをダウンロードして解凍します。

Golang アプリケーションをコンテナ内で実行するには、Golang を実行可能ファイルにコンパイルし、この実行可能ファイルを Docker イメージにパッケージ化する必要もあります。コンパイル時に、GOOS と GOARCH を、展開するシステムと CPU アーキテクチャに設定する必要があります。たとえば、Linux システムに展開したい場合は GOOS を linux に設定する必要があり、ARM アーキテクチャ デバイスに展開したい場合は GOARCH を arm に設定する必要があります。

3. Dockerfile の作成

Docker イメージを作成する最初のステップは、Dockerfile を作成することです。 Dockerfile は、Docker イメージの構築方法を説明する一連の手順が含まれるテキスト ファイルです。

プロジェクトのルート ディレクトリに Dockerfile ファイルを作成し、次のコンテンツをそれに追加します:

FROM golang:1.15.7-alpine3.13
WORKDIR /app
COPY . .
RUN apk update && apk add git
RUN go mod download
RUN go build -o main .
EXPOSE 8080
CMD ["./main"]

この Dockerfile には次の指示が含まれます:

  1. FROM: この命令は、使用する Docker イメージを指定するために使用されます。ここでは、公式の Golang イメージ、バージョン 1.15.7 を使用し、ベースのオペレーティング システムは Alpine Linux 3.13 です。
  2. WORKDIR: このディレクティブは、コンテナ内の作業ディレクトリを指定するために使用されます。ここでは /app に設定します。
  3. COPY: このコマンドは、プロジェクト コードをコンテナーの /app ディレクトリにコピーするために使用されます。
  4. RUN: このコマンドは、コンテナ内で実行する必要があるいくつかのコマンドを実行するために使用されます。ここでは、Alpine Linux ソフトウェア ライブラリの更新、git のインストール、プロジェクトの依存関係のダウンロード、コードの実行可能ファイルへのコンパイルという 3 つのコマンドを実行しました。
  5. EXPOSE: このディレクティブは、コンテナによって公開されるポートを宣言するために使用されます。ここでは、コンテナによって公開されるポートが 8080 であると宣言します。
  6. CMD: この命令は、コンテナの起動時に実行するコマンドを指定するために使用されます。ここで、開始するために指定したコマンドは、コンパイルした実行可能ファイルを実行することです。

4. Docker イメージをビルドする

Dockerfile を作成した後、docker build コマンドを使用して Docker イメージを構築できます:

docker build . -t myapp

その中には、" ." は Dockerfile が存在するフォルダーの場所を示し、-t パラメーターはイメージのラベルを指定します。ここではラベルを myapp に設定します。ビルドが完了したら、docker image コマンドを使用してすべてのイメージを表示でき、ビルドしたばかりの myapp イメージが表示されるはずです。

5. Docker イメージの実行

Docker イメージを取得したら、それを使用してコンテナーを作成し、Golang アプリケーションを実行できます。 docker run コマンドを使用して、コンテナー内でアプリケーションを実行します。実行する前に、コンテナのポート マッピングを指定する必要があります。ここでは、ホストの 8080 ポートをコンテナの 8080 ポートにマッピングします。

docker run -p 8080:8080 myapp

実行後、ブラウザの http://localhost:8080 を通じてアプリケーションにアクセスできるようになります。

6. クラウドへのデプロイメント

ローカル デプロイメントに加えて、Golang アプリケーションをクラウドにデプロイすることもできます。クラウド導入の利点は、迅速に拡張できることと、運用と保守のコストを効果的に削減できることです。ここでは、Docker Swarm、Kubernetes など、一部のクラウド サービス プロバイダーが提供するコンテナ化ソリューションをデプロイメントに使用できます。

クラウドにデプロイする場合、Docker イメージにいくつかの変更を加える必要があります。上の例では、アプリケーションのコードと依存関係を Dockerfile にパッケージ化しました。実際のデプロイメントでは、アプリケーションをより柔軟に管理およびデプロイできるように、アプリケーションと依存関係を個別にパッケージ化する必要がある場合があります。

7.概要

この記事では、Docker を使用して Golang プロジェクトをデプロイする方法を紹介します。 Docker を使用すると、アプリケーションと必要な依存関係をコンテナーにパッケージ化できるため、さまざまな環境に簡単にデプロイできます。まだ Docker を試したことがない場合は、自分のマシンにインストールして試してみてください。 Docker についてさらに詳しく知りたい場合は、Docker の公式ドキュメントを読むか、Docker コミュニティのアクティビティに参加してください。

以上がDocker が golang プロジェクトをデプロイするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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