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 のインストールと使用

推薦する

CSSポジションの5つの異なる値の使い方の詳細な説明

位置プロパティposition プロパティは、要素に使用する配置方法のタイプ (静的、相対的、固定、...

Dockerのクイックガイド

Docker は、安全で繰り返し可能な環境でソフトウェアを自動的にデプロイする方法を提供し、コンピュ...

Alibaba Cloud Centos 7.5 に MySQL をインストールするチュートリアル

CentOS 7 の yum ソースには、MySQL を正常にインストールするための mysql-s...

JS での Reduce Fold Unfold の使用法の詳細な説明

目次折りたたむ(減らす) for...of の使用whileループの使用折り畳み実装に近い展開する配...

フロントエンドに必要なNginx設定の詳細な説明

Nginx (エンジン x) は、軽量で高性能な HTTP およびリバース プロキシ サーバーであり...

MySQL 8.0 の新機能の落とし穴と解決策についての簡単な説明 (要約)

1. ユーザーを作成して承認するMySQL 8.0 では、ユーザーの作成と認証が以前とは異なります...

角度コンテンツ投影の詳細な説明

目次単一コンテンツ投影マルチコンテンツ投影単一条件のコンテンツ投影アプリ-人物-htmlアプリ担当者...

自作の Windows サーバーに egg アプリケーションを展開する方法 (画像とテキスト付き)

1. IEブラウザを使用してVPNにログインする 2. リモートログイン 3. サーバーに最新のn...

ページキャッシュを無効にするいくつかの方法を共有する

本日、開発中に、顧客からページをキャッシュしないように要求される方法に遭遇しました。調べたところ、ペ...

MySql テーブル、データベース、シャーディング、パーティショニングの知識の詳細な説明

1. はじめにデータベース内のデータ量が一定レベルに達すると、システムパフォーマンスのボトルネックを...

フォント宝庫 50 種類の素晴らしい無料英語フォントリソース パート 2

デザイナーは独自のフォント ライブラリを持っているため、プロジェクトの設計時にすぐに使用できます。今...

Vueはカウンターのシンプルな生成を実装します

この記事では、Vueカウンターの簡単な実装コードを例として紹介します。具体的な内容は以下のとおりです...

Ansible を使用した Nginx のバッチ デプロイのサンプル コード

1.1 nginxインストールパッケージとインストールスクリプトをクライアントにコピーし、スクリプト...

Vueフィルターの使い方

目次概要フィルターの定義フィルターの使用カスタムグローバルフィルターローカルフィルター予防例1(ロー...

MySQLの結合クエリ、ユニオンクエリ、サブクエリの原理と使用例の詳細な説明

この記事では、例を使用して、MySQL の結合クエリ、結合クエリ、サブクエリの原理と使用方法を説明し...