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

推薦する

MySQL最適化ソリューション: スロークエリログを有効にする

目次序文スロークエリログの設定テスト付録: ログ解析ツール mysqldumpslow要約する序文こ...

Docker Composeオーケストレーションツールの詳細な説明

Docker の作成Docker Compose は、複数の Docker コンテナを定義して実行す...

jQuery カスタム虫眼鏡効果

この記事の例では、jQueryのカスタム虫眼鏡効果の具体的なコードを参考までに共有しています。具体的...

CSS グリッドレイアウトで列にアイテムを埋め込む方法

n 個のアイテムがあり、これらのアイテムをグリッド レイアウトの列に並べ替える必要があるとします。列...

MySQL データベースのマスター スレーブ分離のサンプル コード

導入MySQL データベースの読み取りと書き込みの分離を設定すると、データベースに対する書き込み操作...

Linux でのプロセスデーモン スーパーバイザーのインストール、構成、および使用

Supervisor は非常に優れたデーモン管理ツールです。自動起動、ログ出力、自動ログカットなど、...

Web デザインのための 5 つのシンプルな XHTML Web フォーム

Web デザイン 5 におけるシンプルな XHTML Web フォーム。 テクニック 1: ラベル ...

HTML ページにミュージック ビデオを追加する例

1. ビデオタグFirefoxでは自動再生をサポートしますが、GoogleとIEではサポートしません...

Vuexの役割についての深い理解

目次概要コンポーネント間でデータを共有する方法Vuex の原則の紹介Vuexはコンポーネントのグロー...

MySQL で遅い SQL 文を見つける方法

MySQL で遅い SQL ステートメントを見つけるにはどうすればよいでしょうか?これは、多くの人を...

CSSの高さの崩壊問題についての簡単な説明

パフォーマンス例えば: HTML: <div class="first"&...

JavaScript と JQuery フレームワークの基本チュートリアル

目次1. JS オブジェクトDOM –1、機能–2、テスト3. jQuery –1. 概要–2、使用...

nginx を介してローカルでリバースプロキシを構成するプロセス全体

序文Nginx は、イベント駆動型の非同期非ブロッキング処理フレームワークを使用する軽量 HTTP ...

Centos7 システム上の nginx サーバーで Phalcon 環境を構築する方法の詳細な説明

この記事では、centos7 システムの nginx サーバーの下に phalcon 環境を構築する...

MySQL の文字セットの不一致によって発生する異常な接続テーブルの解決方法

目次1. 解決策2. MySQLの文字セット文字セット検証ルール次のように簡単なテーブルクエリを実行...