Skip to content

使用docker部署一个带配置文件的golang项目

Notifications You must be signed in to change notification settings

516134941/docker-golang-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#使用docker部署一个带配置文件的golang项目

首先看下我这的目录结构

在这里插入图片描述

我这的gopath为 gowork目录

在这里插入图片描述

编写dockerfile

首先编译main.go 生成二进制文件,该二进制文件可以直接在相应的linux服务器下运行。 我这里使用如下指令,编译后会多出一个main文件

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go

可以根据自己需要编译的平台更改 使用from加入母镜像 这里使用scratch空镜像,因为编译后的main是可以直接运行的

FROM scratch

MAINTAINER指定维护者信息
WORKDIR .这里使用当前目录作为工作目录,可以修改
将main 与 test.toml 配置文件 放入当前目录
EXPOSE 这是对方开发的端口,可修改,我这使用8082
CMD 附带配置文件test.toml 运行当前目录下的main

MAINTAINER  "hcf"

WORKDIR .
ADD main .
ADD test.toml .

EXPOSE 8082
CMD ["./main","-config=./test.toml"]

容器的配置就完成了

生成镜像

在dockerfile目录运行

docker build -t dockertest .

在这里插入图片描述 successfully built 构建成功

使用

docker images

查看刚生成的镜像 在这里插入图片描述 运行镜像

docker run -p 8082:8082 dockertest

在这里插入图片描述 在这里插入图片描述 成功运行,页面输入http://localhost:8082/ 成功访问

如果需要容器后台运行,指令加入 -d 就行了

docker run -p 8082:8082 -d dockertest

更新后的dockerfile 使用多阶段构建 加入go mod,在docker镜像制作时进行编译

FROM golang:1.16 as build

ENV GOPROXY https://goproxy.cn/
ENV GO111MODULE on
WORKDIR /go/src/docker-golang-demo
COPY . ./
RUN go mod download

RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go

FROM scratch as prod
COPY --from=build /go/src/docker-golang-demo/main /
COPY --from=build /go/src/docker-golang-demo/test.toml /
EXPOSE 8082
CMD ["./main","-config=./test.toml"]

About

使用docker部署一个带配置文件的golang项目

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages