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 3.2 でシンタックスシュガーを設定する

目次前の1. セットアップ構文シュガーとは何か2. セットアップコンポーネントを使用して自動的に登録...

NodeJSとブラウザにおけるこのキーワードの違い

序文JavaScript を学習した人なら誰でも、さまざまな環境で this がどこを指すかという問...

Dockerイメージストレージoverlayfsの使用

1. 概要Docker のイメージはレイヤーで設計されています。各レイヤーは「レイヤー」と呼ばれます...

JavaScript のコールバック関数の理解と使用

目次概要コールバックまたは高階関数とは何ですか?コールバック関数はどのように機能しますか?コールバッ...

Vue ページ監視ユーザープレビュー時間機能実装コード

最近のビジネスでは、オンライン トレーニング システムが特定のオンライン プレビュー ページに対する...

6ull が Linux ドライバ モジュールをロードできない問題の解決方法

目次0x01 ドライバーモジュールのロードに失敗しました0x02 ソリューション要約する0x01 ド...

フロントエンドセキュリティの詳細な説明: JavaScript の http ハイジャック対策と XSS

目次HTTP ハイジャック、DNS ハイジャック、XSS HTTPハイジャックDNSハイジャックXS...

Dockerコンテナ監視とログ管理の実装プロセス分析

Docker の導入規模が大きくなると、コンテナを監視する必要があります。一般的に、Docker に...

MySQL 接続で認証失敗エラーが発生する場合の分析と解決方法

[問題の説明]アプリケーション側では、次のエラーが時々表示されます。メソッド 'mysql_...

MySQL データベースの集計クエリと結合クエリ操作

目次1. クエリ結果を挿入する2. 集計クエリ2.1 はじめに2.2 集計関数2.3 group b...

MySQL スロークエリ pt-query-digest スロークエリログの分析

1. はじめにpt-query-digest は、MySQL のスロー クエリを分析するためのツール...

CSS を使用して、画像に 3D の凸型と凹型のエフェクト (フレーム外に凸型、またはフレーム内に凹型) を実現します。

Ⅰ. 問題の説明: CSS を使用して画像の 3D 凸凹効果を実現します。 Ⅱ実施手順は以下のとお...

Win7 で IIS7 Web および FTP サービスを完全にアンインストールする方法

昨日、パソコンにPHP開発環境をセットアップした後、Apacheサーバーを再起動するとエラーが続きま...

Navicat for MySQLのスケジュールされたデータベースバックアップとデータ復旧の詳細

データベースの変更または削除操作によってデータ エラーが発生したり、データベースがクラッシュしたりす...

CentOS の起動時に RabbitMq ソフトウェアを自動的に起動する方法

1. /etc/init.dディレクトリに新しいrabbitmqを作成します。 [root@loca...