検索
ホームページ運用・保守DockerDocker イメージに基づいて Go プロジェクトをデプロイする (詳細な例)

この記事では、GoLang Web プログラムの作成や Linux でのパッケージのコンパイルに関する問題など、Docker イメージに基づいた Go プロジェクトのデプロイに関する関連知識を提供します。

Docker イメージに基づいて Go プロジェクトをデプロイする (詳細な例)

#依存関係の知識

    Go クロスコンパイルの基本
  • Docker の基本
  • Dockerfile カスタム イメージの基本
  • docker-compose オーケストレーション ファイル作成の基本
もちろん、まったく知らない場合でも、この手順に従ってデプロイメントを完了できます。途中で小さな問題が発生した場合は、解決方法がわかりません。もちろん、メッセージを残すこともできます。

Mac環境で開発・テストを行ったので、Windowsの場合は多少の違いはあるかもしれませんが、大きな問題はないと思います。

1. 依存環境

    Docker
2. GoLang Web プログラムの作成

ここに書きます最も単純な hello world プログラムでは、リスニング ポートはポート 80 です。

次の内容を含む新しい
main.go ファイルを作成します:

package mainimport (
    "fmt"
    "log"
    "net/http")func sayHello(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "hello world")}func main() {
    http.HandleFunc("/", sayHello)//注册URI路径与相应的处理函数
    log.Println("【默认项目】服务启动成功 监听端口 80")
    er := http.ListenAndServe("0.0.0.0:80", nil)
    if er != nil {
        log.Fatal("ListenAndServe: ", er)
    }}

3. Linux でプログラム パッケージにコンパイルします

Mac で開発しましたgo クロスコンパイルを使用する必要があります。クロスコンパイルに慣れていない場合は、ドキュメントを確認するか、以下のコマンドを直接コピーしてコンパイルできます。


Docker で実行したいと考えています。基本的な golang イメージが実行されているため、i386 プロセッサと互換性のあるプログラムにコンパイルする必要があります。 。

sudo env GOOS=linux GOARCH=386 go build main.go

このコンパイルが完了すると、ローカルに

main プログラムがもう 1 つ作成されます。当面はそのままにしておきます。

4.

Dockerfile を使用して Go プログラムのイメージをカスタマイズします

新しいフォルダーを作成し、その中に新しい

Dockerfile ファイルを作成します。次に、その中に ##appscript という 2 つのファイルを新規作成します。前の手順の main プログラムを app フォルダーに置き、script に新しい build.sh スクリプト ファイルを作成します。ファイルの内容については、後で説明しますので、今は気にしないでください。 具体的なファイル構造は以下の通りです。

.
├── Dockerfile
├── app
│   └── main
└── script
    └── build.sh

次は、

Dockerfile

ファイルの内容です。最初に内容をコード化します: <pre class='brush:php;toolbar:false;'>FROM golang MAINTAINER 青羽 WORKDIR /go/src/COPY . .EXPOSE 80CMD [&quot;/bin/bash&quot;, &quot;/go/src/script/build.sh&quot;]</pre>ここに説明があります:

    FROM
  • は統合元のイメージです。私たちの go プログラムは、直接使用できる golang のようなイメージを公式に提供しています。
  • MAINTAINER
  • はこの名前を維持します。
  • WORKDIR
  • 作業ディレクトリ。
  • COPY
  • これは、すべてのローカル ファイルを作業ディレクトリにコピーするコピー コマンドです。
  • EXPOSE
  • これは相手が開発したポートです。デフォルトではポート 80 を開きます。これは実際の状況に応じて変更できます。
  • CMD
  • でパラメータを実行する このように書いたコマンドは、イメージの開始時にスクリプト script/build.sh を実行するためのもので、このスクリプトには go プログラムを開始するコマンドが含まれています。 ここにコンテンツを貼り付けます:
    #!/usr/bin/env bash
    cd /go/src/app/ && ./main
  • この 2 行だけです。

5. 独自のイメージをコンパイルする

これは

Docker

の知識に属するため、コマンドを貼り付けます。 <pre class='brush:php;toolbar:false;'>docker build -t go-web .</pre>

このコマンドが実行されます。
    golang
  • イメージがローカルで利用できない場合は、まず公式のイメージ ライブラリに移動してイメージをプルし、次にコンパイルします。ただ静かに彼を待ってください。
  • go-web
  • このパラメータは、最後にコンパイルされたイメージの名前です。任意に変更することも、go-web:v1 のようにバージョン番号を追加することもできます。

Docker イメージに基づいて Go プロジェクトをデプロイする (詳細な例)上記の出力が表示されたら、コンパイルが成功し、ローカルに

go-web## という名前のファイルがあることを意味します。画像 #ミラー。

docker イメージを使用して次のクエリを実行できます。

6. Docker イメージに基づいて Go プロジェクトをデプロイする (詳細な例)docker-compose.yml

ファイル

## を作成します。 # to これは最後のステップです。go プログラムを実行するためにコンパイルしたばかりの go-web を使用する場合:

version: &#39;2&#39;networks:
  basic:services:
  world:
    container_name: world
    image: go-web
    ports:
      - "8099:80"
    volumes:
      - ./app/go/world:/go/src/app:rw
    networks:
      - basic

この時点で、オーケストレーション ファイルが作成されました。必要なだけ オーケストレーション ファイルを開始するには docker-compose を使用する必要があります。起動コマンドは次のとおりです:

docker-compose -f docker-compose.yml up -d world

以下のプロンプトが出力されれば、起動は成功です。 <pre class='brush:php;toolbar:false;'>Creating world ... done</pre>起動が成功したら、

docker ps

を使用して起動が成功したかどうかを確認できます。

次に、

http://127.0.0.1:8099

にアクセスして、Go プログラムにアクセスします。

推奨される学習: 「docker ビデオ チュートリアル

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

声明
この記事はCSDNで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Docker in Action:実際の例とユースケースDocker in Action:実際の例とユースケースApr 24, 2025 am 12:10 AM

実際のプロジェクトのDockerのアプリケーションシナリオには、展開の簡素化、マルチコンテナーアプリケーションの管理、パフォーマンスの最適化が含まれます。 1.Dockerは、dockerfileを使用してnode.jsアプリケーションを展開するなど、アプリケーションの展開を簡素化します。 2。DockerComposeは、マイクロサービスアーキテクチャのWebやデータベースサービスなどのマルチコンテナーアプリケーションを管理しています。 3.パフォーマンス最適化は、マルチステージ構造を使用して画像サイズを縮小し、健康チェックを通じてコン​​テナのステータスを監視します。

Docker vs. Kubernetes:ユースケースとシナリオDocker vs. Kubernetes:ユースケースとシナリオApr 23, 2025 am 12:11 AM

小さなプロジェクトまたは開発環境でDockerを選択し、大規模なプロジェクトまたは生産環境でKubernetesを選択します。 1.ドッカーは、迅速な反復とテストに適しています。2。Kubernetesは、大規模なアプリケーションの管理と拡張に適した強力なコンテナオーケストレーション機能を提供します。

LinuxのDocker:Linuxシステムのコンテナ化LinuxのDocker:Linuxシステムのコンテナ化Apr 22, 2025 am 12:03 AM

Linuxは、豊富なツールとコミュニティサポートを提供するネイティブプラットフォームであるため、LinuxでDockerが重要です。 1. docker:sudoapt-getupdateとsudoapt-getinstalldocker-cedocker-ce-clicotainerd.ioを使用します。 2。コンテナの作成と管理:Dockerrun-D-Namemynginx-P80:80NginxなどのDockerrunコマンドを使用します。 3。DockerFileを書き込み:画像サイズを最適化し、マルチステージ構造を使用します。 4。最適化とデバッグ:DockerLogsとDockerexを使用します

Docker:コンテナ化ツール、Kubernetes:オーケストレーターDocker:コンテナ化ツール、Kubernetes:オーケストレーターApr 21, 2025 am 12:01 AM

Dockerはコンテナ化ツールであり、Kubernetesはコンテナオーケストレーションツールです。 1. Dockerパッケージアプリケーションとその依存関係は、Docker対応環境で実行できるコンテナに依存します。 2。Kubernetesはこれらのコンテナを管理し、自動展開、スケーリング、管理を実装し、アプリケーションを効率的に実行します。

Dockerの目的:アプリケーションの展開を簡素化しますDockerの目的:アプリケーションの展開を簡素化しますApr 20, 2025 am 12:09 AM

Dockerの目的は、アプリケーションの展開を簡素化し、コンテナ化技術を通じてさまざまな環境でアプリケーションが一貫して実行されるようにすることです。 1)Dockerは、アプリケーションと依存関係をコンテナにパッケージ化することにより、環境の違いの問題を解決します。 2)DockerFileを使用して画像を作成して、アプリケーションがどこでも一貫して実行されることを確認します。 3)Dockerの作業原則は画像とコンテナに基づいており、Linuxカーネルの名前空間とコントロールグループを使用して、分離とリソース管理を実現します。 4)基本的な使用法には、DockerHubからの画像の引き込みと実行が含まれます。高度な使用法には、DockerComposeを使用したマルチコンテナーアプリケーションの管理が含まれます。 5)画像構築の故障やコンテナの障害などの一般的なエラーは、ログやネットワーク構成を介してデバッグできます。 6)パフォーマンス最適化構造

LinuxとDocker:さまざまなLinux分布のDockerLinuxとDocker:さまざまなLinux分布のDockerApr 19, 2025 am 12:10 AM

Ubuntu、Centos、およびDebianにDockerをインストールして使用する方法は異なります。 1)ubuntu:aptパッケージマネージャーを使用します。コマンドはsudoapt-getupdate && sudoapt-getinstalldocker.ioです。 2)Centos:Yum Package Managerを使用すると、Dockerリポジトリを追加する必要があります。コマンドは、sudoyumininstall-yyum-utils && sudoyum-config-manager - add-repohttps://download.docker.com/linです

Mastering Docker:Linuxユーザー向けガイドMastering Docker:Linuxユーザー向けガイドApr 18, 2025 am 12:08 AM

LinuxでDockerを使用すると、開発効率が向上し、アプリケーションの展開を簡素化できます。 1)Ubuntu画像を引く:dockerpullubuntu。 2)ubuntuコンテナを実行:Dockerrun-itubuntu/bin/bash。 3)nginxを含むDockerFileを作成します:fromubuntu; runapt-getupdate && apt-getinstall-ynginx; expose80。 4)画像の作成:dockerbuild-tmy-nginx。 5)コンテナの実行:Dockerrun-D-P8080:80

LinuxのDocker:アプリケーションとユースケースLinuxのDocker:アプリケーションとユースケースApr 17, 2025 am 12:10 AM

Dockerは、Linuxのアプリケーションの展開と管理を簡素化します。 1)Dockerは、アプリケーションとその依存関係を軽量でポータブルコンテナにパッケージ化するコンテナ化されたプラットフォームです。 2)Linuxでは、DockerはCgroupと名前空間を使用して、コンテナの分離とリソース管理を実装します。 3)基本的な使用には、画像の引き込みと実行容器が含まれます。 DockerComposeなどの高度な使用は、マルチコンテナーアプリケーションを定義できます。 4)一般的に使用されるDockerLogsとDockerexecコマンドをデバッグします。 5)パフォーマンスの最適化は、マルチステージの構造により画像サイズを縮小することができ、DockerFileをシンプルに保つことがベストプラクティスです。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境