Luo San Dong LogsLuo San Dong Logs
主页
  • Go语言程序设计
  • .NET 程序设计语言
  • JavaScript程序设计
  • Python编程
  • Linux 基础
  • CentOS
  • Docker
  • Nginx
  • 核心的概念
关于我
主页
  • Go语言程序设计
  • .NET 程序设计语言
  • JavaScript程序设计
  • Python编程
  • Linux 基础
  • CentOS
  • Docker
  • Nginx
  • 核心的概念
关于我
  • Go语言程序设计

Go语言程序设计

5.10 Go Docker

  • 发布Go项目
# 交叉编译环境设置
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64

go build -o dist/linux/adss  # 编译项目 到dist目录



SET CGO_ENABLED=0
SET GOOS=windows
SET GOARCH=amd64 
go build -o dist/windows/adss.exe


  • Dockerfile
#依赖镜像
FROM golang:1.20.2

#作者信息
MAINTAINER "luo.sd"

# 配置模块代理
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct

#工作目录
WORKDIR /app
ADD .  /app

#在Docker工作目录下执行命令   生产环境请不要在容器中编译,会泄漏源代码
# RUN go build -o main ./main.go

#设置 app文件可可执行权限
RUN chmod +x /app/adss


#暴露端口
EXPOSE 8080

#执行项目的命令
CMD ["/app/adss"]

  • 打包镜像

docker build -f ./Dockerfile -t adm:1.0 .  # 镜像名称:tag   

  • 创建一个volume
docker volume create adm-dev
docker volume create adm-mgmt

docker run -d --restart always --name adm-dev -v adm-dev:/app -p 80:8080 adm:1.0

## 注意运行容器时,不在在volume目录去执行docker run
  • 运行容器
docker run -d --restart always --name personal-adm -v /apps/adm:/app/ -p 80:8080 adm:1.0


  • 进入容器
docker exec -it personal-adm bash
  • 容器启动失败进入容器的方式
docker run -itd --name adm personal-adm /bin/bash