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

推薦する

Vueのシンプルストアの詳しい説明

Vue におけるストアの最も単純な応用はグローバル ストレージです。ここでは、相互にジャンプするため...

MySQLテーブル名の大文字と小文字を区別しない設定方法の詳細な説明

デフォルトでは、Linux の MySQL はテーブル名の大文字と小文字を区別します。 MySQL ...

Django プロジェクトを作成して MySQL に接続する方法

1: django-admin.py startproject プロジェクト名2: cd プロジェク...

SpringBoot プロジェクトの Docker 環境を実行するときに発生する無限再起動問題の詳細な説明

もしかしたら私の考え方が間違っていたのかもしれないし、問題の説明が少し乱雑だったのかもしれないが、こ...

CSS3のbox-shadowプロパティの使い方の詳細な例

CSS には多くの属性があります。特に複数の値を設定する必要がある属性は、長期間使用しないと忘れられ...

データベースアカウントのパスワード暗号化の詳細な説明と例

データベースアカウントのパスワード暗号化の詳細な説明と例データベースアカウントとパスワードはデータベ...

html 内の絶対パス URL と相対パス URL、サブディレクトリ、親ディレクトリ、ルート ディレクトリ

絶対 URL は、インターネット上の特定のファイルに必要なすべてのコンテンツを表すために使用されます...

Vue-router プログラムナビゲーションの 2 つの実装コード

ページをナビゲートする2つの方法宣言型ナビゲーション: リンクをクリックしてナビゲーションを実現する...

ウェブデザインのためのロイヤルブルーのカラーマッチング入門

古典的な色の組み合わせは力と権威を伝え、強いロイヤルブルーはあらゆる古典的な色の組み合わせの中心的な...

Linux ipcsコマンドの使用

1. コマンドの紹介ipcs コマンドは、Linux のプロセス間通信機能の状態を報告するために使用...

Reactの新バージョンのライフサイクルフック機能と使用方法の詳細な説明

旧ライフサイクルと比較して 3つのフックが廃止され、2つの新しいフックが追加されましたReact16...

Docker+Jenkins+Gitlab+Djangoアプリケーションデプロイ実践の詳細な説明

1. 背景インターネット アプリケーションの急速な更新と反復という状況では、従来の手作業や単純なスク...

MySQL シーケンス AUTO_INCREMENT の詳細な説明とサンプルコード

MySQL シーケンス AUTO_INCREMENT の詳細な説明とサンプルコードMySQL シーケ...

Linux (Ubuntu 18.04) に Anaconda をインストールする詳細な手順

Anaconda は、大規模なデータ処理、予測分析、科学計算のための最も人気のある Python デ...

CSS3 列を使用したカード ウォーターフォール レイアウトを実装するためのサンプル コード

この記事では、カード ウォーターフォール レイアウトを実現するための CSS3 列のサンプル コード...