# 基于golang最新版本的镜像
FROM golang:latest
# 设置维护者标签
LABEL maintainer="xxx@gmail.com"
# 将当前目录下的所有文件拷贝到容器的/app目录下
COPY ./ /app
# 下载 + 拷贝远程文件到容器的/app目录下
# ADD https://xxx.yyy.zzz/abc.tar.gz /app
# 设置工作目录
WORKDIR /app
# 设置环境变量
# ENV APP_HOME=/usr/src/app
# 创建一个挂载点,用于持久化和共享数据
# VOLUME ["/data"]
# 指定容器运行时的用户,容器默认以 root 用户运行
# USER root
# 定义构建时要使用到的临时参数,构建完成后无效
# ARG VERSION=1.0
# 在工作目录下运行命令
RUN go mod download
RUN go build -o main .
# 将容器内部的8020端口暴露出来,外部可以访问这个端口
EXPOSE 8020
# 定义容器健康检查,允许 Docker 监测容器的健康状况,并根据健康检查的结果决定是否重启容器
# HEALTHCHECK CMD curl --fail http://localhost:8080 || exit 1
# 指定容器启动时默认运行的命令(可以被运行时单独指定的命令或参数覆盖)
# CMD ["go run", "main.go"]
# 也可以使用 ENTRYPOINT 指令来指定容器的入口点(不会被运行时单独指定的命令或参数覆盖)
# ENTRYPOINT ["go run"] # 用于定义执行的命令
# CMD ["main.go"] # 用于定义执行的参数
ENTRYPOINT [ "./main" ]
# 如何使用这个Dockerfile
# docker build -t my-app .
# docker run -d -p 8020:8020 my-app
# 后记:以上方法比较繁琐,下一阶段将使用docker-compose来简化这个过程