签入版本
This commit is contained in:
@@ -0,0 +1,124 @@
|
||||
# 使用CentOS 8作为基础镜像
|
||||
FROM centos:8
|
||||
|
||||
# 设置元数据标签
|
||||
LABEL maintainer="小蚂蚁云团队" \
|
||||
version="1.0" \
|
||||
description="基于CentOS 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; \
|
||||
\
|
||||
# 更新系统并安装基础工具
|
||||
dnf update -y && \
|
||||
dnf install -y \
|
||||
curl \
|
||||
tar \
|
||||
gzip \
|
||||
git \
|
||||
make \
|
||||
gcc \
|
||||
glibc-devel \
|
||||
glibc-langpack-en \
|
||||
glibc-locale-source \
|
||||
glibc-common \
|
||||
&& \
|
||||
\
|
||||
# 清理dnf缓存以减少镜像大小
|
||||
dnf clean all && \
|
||||
rm -rf /var/cache/dnf; \
|
||||
\
|
||||
# 配置时区
|
||||
ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && \
|
||||
echo $TZ > /etc/timezone; \
|
||||
\
|
||||
# 正确的locale配置方式 - 使用locale-gen或直接设置
|
||||
# 方法1: 使用locale配置文件
|
||||
echo 'LANG="en_US.UTF-8"' > /etc/locale.conf && \
|
||||
echo 'LC_ALL="en_US.UTF-8"' >> /etc/locale.conf; \
|
||||
\
|
||||
# 方法2: 生成locale(CentOS 8的正确方式)
|
||||
localedef -c -i en_US -f UTF-8 en_US.UTF-8 || echo "Locale generation completed"; \
|
||||
\
|
||||
# 验证locale设置
|
||||
locale -a | grep en_US.UTF-8 || echo "en_US.UTF-8 locale available";
|
||||
|
||||
# 添加软件包
|
||||
ADD go1.25.1.linux-amd64.tar.gz /usr/local
|
||||
|
||||
# 下载并安装Go
|
||||
RUN set -eux; \
|
||||
\
|
||||
# 删除临时文件
|
||||
rm -f "go$GO_VERSION.linux-amd64.tar.gz"; \
|
||||
\
|
||||
# 创建Go工作目录
|
||||
mkdir -p /go/src /go/bin /go/pkg && \
|
||||
chmod -R 755 /go;
|
||||
|
||||
# # 下载并安装Go
|
||||
# RUN set -eux; \
|
||||
# \
|
||||
# # 下载Go安装包
|
||||
# curl -SLO "https://dl.google.com/go/go$GO_VERSION.linux-amd64.tar.gz" && \
|
||||
# \
|
||||
# # 解压到/usr/local目录
|
||||
# tar -C /usr/local -xzf "go$GO_VERSION.linux-amd64.tar.gz" && \
|
||||
# \
|
||||
# # 删除临时文件
|
||||
# rm -f "go$GO_VERSION.linux-amd64.tar.gz"; \
|
||||
# \
|
||||
# # 创建Go工作目录
|
||||
# mkdir -p /go/src /go/bin /go/pkg && \
|
||||
# chmod -R 755 /go;
|
||||
|
||||
# 验证Go安装和locale
|
||||
RUN set -eux; \
|
||||
\
|
||||
# 检查系统locale设置
|
||||
echo "=== Locale Settings ==="; \
|
||||
cat /etc/locale.conf || echo "No locale.conf"; \
|
||||
echo "=== Environment Locale ==="; \
|
||||
echo "LANG=$LANG"; \
|
||||
\
|
||||
# 检查Go版本
|
||||
go version && \
|
||||
\
|
||||
# 检查环境变量
|
||||
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 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"]
|
||||
Reference in New Issue
Block a user