这两天服务器到期了,准备把项目全部迁走到新服务器,因为我的博客项目之前是二进制方式运行在服务器的,我想为了方便迁移将程序编译成docker镜像,结果死活时区都不正确,即使在运行时已经设置了 TZ=Asia/Shanghai 但是仍然不生效。在我问过ai之后才得知不是所有的镜像都包含时区配置的支持,比如我现在使用的这个ubuntu就是不支持的,所以需要在构建的时候加入这些设置才行
FROM golang AS build_imageWORKDIR /buildCOPY . .RUN go env -w GO111MODULE=on \&& go env -w GOPROXY=https://goproxy.cn,direct \&& go mod tidy \&& go build -o eblog main.go \&& cp conf/app.example.conf conf/app.conf \&& mkdir build_finsh \&& cp -r conf build_finsh/conf \&& cp eblog build_finsh/eblog \&& cp -r profile build_finsh/profile \&& cp -r static build_finsh/static \&& cp -r views build_finsh/views# ===============================# Runtime image# ===============================FROM ubuntu:24.04# 只提供时区能力,不锁定时区ENV DEBIAN_FRONTEND=noninteractiveRUN apt-get update \&& apt-get install -y --no-install-recommends tzdata ca-certificates \&& rm -rf /var/lib/apt/lists/*WORKDIR /appCOPY --from=build_image /build/build_finsh /appEXPOSE 8080CMD ["./eblog"]
FROM golang AS build_imageWORKDIR /buildCOPY . .RUN go env -w GO111MODULE=on \&& go env -w GOPROXY=https://goproxy.cn,direct \&& go mod tidy \&& go build -o eblog main.go \&& cp conf/app.example.conf conf/app.conf \&& mkdir build_finsh \&& cp -r conf build_finsh/conf \&& cp eblog build_finsh/eblog \&& cp -r profile build_finsh/profile \&& cp -r static build_finsh/static \&& cp -r views build_finsh/views# ==============================# Runtime image# ==============================FROM ubuntu:24.04ENV TZ=Asia/ShanghaiENV DEBIAN_FRONTEND=noninteractive# 安装时区数据库并配置系统时区RUN apt-get update \&& apt-get install -y --no-install-recommends tzdata ca-certificates \&& ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \&& echo $TZ > /etc/timezone \&& rm -rf /var/lib/apt/lists/*WORKDIR /appCOPY --from=build_image /build/build_finsh /appEXPOSE 8080CMD ["./eblog"]
version: '3.8'services:# EnianBlog 应用服务enian_blog:image: hslr/enian_blog:latestcontainer_name: enian_blogports:- "8080:8080"volumes:# 持久化配置文件- ./conf:/app/conf# 持久化上传文件- ./upload:/app/static/upload# 持久化session数据- ./tmp:/app/tmp# 持久化SQLite数据库(如果使用SQLite)- ./data:/app/dataenvironment:- TZ=Asia/Shanghairestart: unless-stoppednetworks:- enian_network
正在学习Go语言的PHP程序员。