GoのDockerデプロイメント用の基本イメージ2つの実装

GoのDockerデプロイメント用の基本イメージ2つの実装

1. golang:最新のベースイメージ

mkdir gotest
タッチメイン.go
Dockerfileに触れる

1. サンプルコード

パッケージメイン

輸入 (
    「fmt」
    "ログ"
    「ネット/http」
)

関数main() {
    http.HandleFunc("/", func(ライター http.ResponseWriter、リクエスト *http.Request) {
        fmt.Fprint(ライター、「Hello World」)
    })
    fmt.Println("3000!!")
    log.Fatal(http.ListenAndServe(":3000", nil))
}

2. Dockerfileの設定

#ソース画像は golang:latest から
#作業ディレクトリを設定する WORKDIR $GOPATH/src/github.com/gotest
# サーバーの Go プロジェクト コードを Docker コンテナーに追加します ADD . $GOPATH/src/github.com/gotest
#go build 実行可能ファイル RUN go build .
#ポートを公開 EXPOSE 3000
#最後にdockerコマンドENTRYPOINT ["./gotest"]を実行します

3. イメージのパッケージ化

docker build -t gotest を実行します。
  • golang:latest コンパイル プロセスでは、実際にコンテナー内に go 開発環境が構築されます。
  • このソースイメージパッケージは約 800M と比較的大きいです。

2. alpine:最新のベースイメージ

  1. このイメージを使用する一般的なプロセスは、Linux マシン上で go プログラムをバイナリ ファイルにパッケージ化し、それを apine 環境にドロップしてコンパイルされたファイルを実行することです。
  2. デフォルトでは、Go のランタイム環境変数 CGO_ENABLED=1 であり、これは cgo がデフォルトで起動し、Go コードから C コードを呼び出すことができることを意味します。 CGO_ENABLED=0 を設定すると、CGO を無効にすることができます。したがって、CGO_ENABLED=0 go build を実行する必要があります。
  3. このベースイメージのサイズはわずか 13M と非常に小さいです。
#ソース画像: alpine:latest
#作業ディレクトリを設定する WORKDIR $GOPATH/src/github.com/common
# サーバーの Go プロジェクト コードを Docker コンテナーに追加します ADD . $GOPATH/src/github.com/common
#ポート公開 EXPOSE 3002
#最後にdockerコマンドENTRYPOINT ["./common"]を実行します

パッケージ画像

docker build -t common を実行します。

Go の Docker デプロイメント用の基本イメージ 2 つの実装に関するこの記事はこれで終わりです。Go イメージの Docker デプロイメントに関する関連コンテンツの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker イメージに基づいて Go プロジェクトをデプロイする方法と手順

<<:  mysql 8.0.18 mgr のインストールと切り替え機能

>>:  Vue の基本入門: Vuex のインストールと使用

推薦する

スパンの最小高さを定義するソリューションは効果がありません

span タグは HTML ウェブページを作成するときによく使用されますが、このタグの使い方がよくわ...

DockerでJavaプログラムを起動する方法

シンプルなSpring Boot Webプロジェクトを作成するアイデア ツールを使用して、Sprin...

Nginx 静的ファイル サービスの構成と最適化の詳細な説明

ルートディレクトリとインデックスファイルroot ディレクティブは、ファイルの検索に使用するルート ...

一般的でない js 演算演算子の概要

目次2. カンマ演算子3. JavaScript Null 結合演算子 (??) 4. JavaSc...

HTML マーキー文字フラグメントのスクロール

その特性は次のとおりです。方向アクティブな字幕のスクロール方向を設定するコードは次のとおりです。 &...

WeChatミニプログラムでEchartとサブパッケージを使用するための完全な手順

序文休日は終わっていますが、それは別の形で(お腹に触れることで)私たちに現れます。ミニプログラムでデ...

ウェブページを作るときに知っておくべきいくつかのスキル

1. IE6 では z-index が無効です。 CSS では、階層を変更するために z-index...

VirtualBox6上のCentOS7で静的IPを設定する方法と注意点

VirtualBox をインストールした後、CentOS 7 をインストールします。ここでは詳細には...

Linux で CPU 使用率が高くなる原因をトラブルシューティングするプロセスの詳細な説明

目次序文始めるステップトラブルシューティング序文CPU 使用率が高くなるのは、オンラインでよくある問...

MySQL テーブルと列のコメントの概要

コードと同様に、テーブルや列にコメントを追加して、他のユーザーがその機能を理解できるようにすることが...

MySql テーブル内の行を削除する実用的な方法

まず、どのフィールドまたはフィールドの組み合わせがデータ行を一意に識別できるかを決定する必要がありま...

マークアップ言語 - HTML を学んだ後に何を学ぶべきか?

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

CSSボックスの表示/非表示とトップレイヤーの実装コード

.imgbox{ 幅: 1200ピクセル; 高さ: 612px; 右マージン: 自動; 左マージン...

Vue はカードフリップカルーセル表示を実装します

Vueカードのフリップカルーセル表示、フリップ時にデータを切り替えながら、参考までに、具体的な内容は...

WeChatアプレットが検索ボックス機能を実装

この記事の例では、WeChatアプレットの検索ボックス機能を実装するための具体的なコードを参考までに...