2025-09-16 21:25:24 +08:00

101 lines
2.6 KiB
Docker
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 使用CentOS 8作为基础镜像
FROM centos:8
# 设置元数据标签
LABEL maintainer="小蚂蚁云团队" \
version="1.0" \
description="基于RockyLinux 8的Go语言运行环境" \
golang.version="1.25.1"
# 设置环境变量
ENV GO_VERSION=1.25.1 \
GOPATH=/go \
GOROOT=/usr/local/go \
PATH=/usr/local/go/bin:/go/bin:${PATH} \
TZ=Asia/Shanghai \
LANG=en_US.UTF-8
# 设置工作目录
WORKDIR /tmp
# 安装必要的系统依赖和配置环境
RUN set -eux; \
\
# 更新系统并安装基础工具包括shadow-utils用于用户管理
microdnf update -y && \
microdnf install -y \
curl \
tar \
gzip \
git \
make \
gcc \
glibc-devel \
glibc-langpack-en \
shadow-utils \
&& \
\
# 清理缓存以减少镜像大小
microdnf clean all && \
rm -rf /var/cache/dnf; \
\
# 配置时区
ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && \
echo $TZ > /etc/timezone; \
\
# 设置语言环境
echo 'LANG="en_US.UTF-8"' > /etc/locale.conf && \
echo 'LC_ALL="en_US.UTF-8"' >> /etc/locale.conf;
# 添加Go安装包确保go1.25.1.linux-amd64.tar.gz在构建上下文
ADD go1.25.1.linux-amd64.tar.gz /usr/local/
# 创建Go工作目录和配置locale
RUN set -eux; \
\
# 创建Go工作目录
mkdir -p /go/src /go/bin /go/pkg && \
chmod -R 755 /go; \
\
# 检查系统locale设置
echo "=== Locale Settings ==="; \
cat /etc/locale.conf || echo "No locale.conf"; \
echo "=== Environment Locale ==="; \
echo "LANG=$LANG"; \
\
# 检查Go版本
echo "=== Go Version ==="; \
go version && \
\
# 检查环境变量
echo "=== Go Environment ==="; \
go env && \
\
# 简单的Go程序编译测试
echo 'package main; import "fmt"; func main() { fmt.Println("Go环境安装成功!") }' > /tmp/test.go && \
go run /tmp/test.go && \
rm -f /tmp/test.go;
# 设置工作目录Go项目目录
WORKDIR /opt/apps
# 创建非root用户用于运行Go应用安全性考虑
RUN set -eux; \
\
# 创建用户和组
groupadd -r esxi && \
useradd -r -g esxi -d /opt/apps -s /bin/bash esxi && \
\
# 设置目录权限
chown -R esxi:esxi /opt/apps && \
chown -R esxi:esxi /go;
# 设置默认用户(注释掉以便调试)
# USER esxi
# 设置健康检查(可选)
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD go version > /dev/null 2>&1 || exit 1
# 设置默认启动命令
CMD ["go", "version"]