DockerDocker
Docker

依赖知识

  • Go交叉编译基础
  • Docker基础
  • Dockerfile自定义镜像基础
  • docker-compose编排文件编写基础

当然,一点也不会也可以按照这个步骤部署完成,不过可能中间如果出点小问题,会不知道怎么解决,当然你也可以留言。

我是在mac环境上开发测试的,如果你是在windows上可能有一点出入,但应该不会有啥大问题。

一、依赖环境

  • Docker

二、编写一个GoLang web程序

main.go
package main


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

func sayHello(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "hello world")
}
func main() {
    http.HandleFunc("/", sayHello)//注册URI路径与相应的处理函数
    log.Println("【默认项目】服务启动成功 监听端口 80")
    er := http.ListenAndServe("0.0.0.0:80", nil)
    if er != nil {
        log.Fatal("ListenAndServe: ", er)
    }

}

三、编译成linux下的程序包

Dockergolangi386
sudo env GOOS=linux GOARCH=386 go build main.go
main
Dockerfile
Dockerfileappscriptmainappscriptbuild.sh
.
├── Dockerfile
├── app
│   └── main
└── script
    └── build.sh
Dockerfile
FROM golang
MAINTAINER  谦益
WORKDIR /go/src/
COPY . .
EXPOSE 80
CMD ["/bin/bash", "/go/src/script/build.sh"]

这里解释下:

FROMgolangMAINTAINERWORKDIRCOPYEXPOSECMDscript/build.sh
#!/usr/bin/env bash
cd /go/src/app/ && ./main

就这两行。

五、编译我们自己的镜像

Docker
docker build -t go-web .
golanggo-webgo-web:v1
go-webdocker images
docker-compose.yml
go-web
version: '2'

networks:
  basic:

services:

  world:
    container_name: world
    image: go-web
    ports:
      - "8099:80"
    volumes:
      - ./app/go/world:/go/src/app:rw
    networks:
      - basic
docker-compose
docker-compose -f docker-compose.yml up -d world

如果输出下面的提示,说明启动成功了。

Creating world ... done

启动成功后你可以再用

docker ps -a

来查看下是否启动成功了,如果看到下面的这个输出说明就启动成功了。


http://127.0.0.1:8099
DockerNginx