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