使用go镜像打包,运行在容器内
redis和mysql用外部的
项目目录结构 w1go项目:
Dockerfile
# 这种方式是docker项目加上 本地的mysql和redis环境
# go打包的容器
FROM golang:alpine AS builder
# 为我们镜像设置一些必要的环境变量
ENV GO111MODULE=on \
CGO_ENABLED=0 \
GOOS=linux \
GOARCH=amd64 \
GOPROXY=https://goproxy.cn,direct
# 移动到工作目录:/build
WORKDIR /build
# 复制当前目录项目中的 go.mod 和 go.sum文件并下载依赖信息
COPY go.mod .
COPY go.sum .
RUN go mod download
# 复制代码
COPY . .
# 编译代码 -o w1
RUN go build -o w1 ./w1
#创建一个小镜像
FROM scratch
#静态文件
#COPY ./log /log
#COPY ./config /config
# 从builder镜像中把/dist/ww 拷贝到当前目录
COPY --from=builder /build/w1 /
#Entrypoint指令用于设定容器启动时第一个运行的命令及其参数,后面的值就是参数
ENTRYPOINT ["/w1"]
打包镜像,运行
docker build -t goww .
docker run -d -p 18888:8888 --name goww1 goww
关联其他容器
上面示例使用的方式是Docker+本地的mysql环境
创建mysql容器 参考 Dockerfile构建mysql
#mysqlww4 容器名,mysqlww4 是go代码里面链接mysql的路径
docker run -d -p 18880:8888 --name goww4 --link=mysqlww4:mysqlww4 goww4
dsn := "root:root@tcp(mysqlww4:3306)/test?charset=utf8&parseTime=True&loc=Local&timeout=10s"