Maison  >  Article  >  Opération et maintenance  >  Docker déploie deux images de base de go

Docker déploie deux images de base de go

王林
王林avant
2020-06-15 17:50:173349parcourir

Docker déploie deux images de base de go

1. golang:dernière image de base

mkdir gotest
touch main.go
touch Dockerfile

Exemple de code :

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))
}

Configuration du fichier Docker

#源镜像
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"]

Image d'emballage

docker build -t gotest .

golang:latest Le processus de compilation consiste en fait à créer un environnement de développement go dans le conteneur. Cet emballage d'image source fait environ 800 Mo, ce qui est relativement volumineux.

2. alpine : dernière image de base

  • Le processus général d'utilisation de cette image consiste à empaqueter le programme go sous Linux. machine d'abord dans un fichier binaire, puis lancez-le dans l'environnement apine et exécutez le fichier compilé.

  • Par défaut, la variable d'environnement d'exécution de Go CGO_ENABLED=1, ce qui signifie que cgo est démarré par défaut, vous permettant d'appeler du code C dans le code Go. CGO est désactivé en définissant CGO_ENABLED=0. Vous devez donc exécuter : CGO_ENABLED=0 go build C'est tout.

  • Ce paquet d'images de base ne fait que 13 Mo, ce qui est très petit.

#源镜像
FROM alpine:latest
#设置工作目录
WORKDIR $GOPATH/src/github.com/common
#将服务器的go工程代码加入到docker容器中
ADD . $GOPATH/src/github.com/common
#暴露端口
EXPOSE 3002
#最终运行docker的命令
ENTRYPOINT ["./common"]

Image d'emballage :

docker build -t common .

Tutoriel recommandé : docker

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer