ホームページ > 運用・保守 > Docker > Docker は Go の 2 つの基本イメージをデプロイします

Docker は Go の 2 つの基本イメージをデプロイします

王林
リリース: 2020-06-15 17:50:17
転載
3410 人が閲覧しました

Docker は Go の 2 つの基本イメージをデプロイします

1. golang:最新の基本イメージ

mkdir gotest
touch main.go
touch Dockerfile
ログイン後にコピー

サンプルコード:

package main

import (
    "fmt"
    "log"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) {
        fmt.Fprint(writer, "Hello World")
    })
    fmt.Println("3000!!")
    log.Fatal(http.ListenAndServe(":3000", nil))
}
ログイン後にコピー

Dockerfile の設定

#源镜像
FROM golang:latest
#设置工作目录
WORKDIR $GOPATH/src/github.com/gotest
#将服务器的go工程代码加入到docker容器中
ADD . $GOPATH/src/github.com/gotest
#go构建可执行文件
RUN go build .
#暴露端口
EXPOSE 3000
#最终运行docker的命令
ENTRYPOINT ["./gotest"]
ログイン後にコピー

パッケージングイメージ

docker build -t gotest .
ログイン後にコピー

golang:latest 実際にコンテナ内にgo開発環境を構築するコンパイル処理ですが、このソースイメージパッケージは約800Mと比較的大きいです。

2. alpine:最新の基本イメージ

  • このイメージを使用する一般的なプロセスは、Linux 上に go プログラムをパッケージ化することです。最初にマシンにバイナリ ファイルを格納し、次にそれを apine 環境に投入し、コンパイルされたファイルを実行します。

  • デフォルトでは、Go のランタイム環境変数 CGO_ENABLED=1 です。これは、cgo がデフォルトで起動され、Go コードで C コードを呼び出すことができることを意味します。 CGO_ENABLED=0 を設定すると、CGO が無効になります。 CGO_ENABLED=0 go build を実行する必要があります。

  • この基本イメージ パッケージはわずか 13M で、非常に小さいです。

#源镜像
FROM 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 .
ログイン後にコピー

推奨チュートリアル: docker

以上がDocker は Go の 2 つの基本イメージをデプロイしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:jb51.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート