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

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

王林
王林転載
2020-06-15 17:50:173269ブラウズ

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 までご連絡ください。