news 2026/6/23 17:41:58

goweb3系列解析21:GoDocker 目录解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
goweb3系列解析21:GoDocker 目录解析

本文详细介绍了goweb3项目的Docker容器化部署方案,该项目采用多环境、多服务架构,支持从开发到生产的全生命周期管理。核心内容包括:1)清晰的目录结构划分,包含基础服务镜像(MySQL/Redis/Nginx等)和应用服务;2)五层环境体系(local→dev→test→release→master);3)标准化的Dockerfile和docker-compose模板;4)基础服务的中文与时区优化配置;5)完善的配置文件结构和部署脚本。该方案具有轻量级镜像、配置分离、数据持久化、自动恢复等特点,通过Docker Compose实现服务编排,各组件通过定义端口相互通信,形成完整的微服务架构。

Docker 目录解析

docker目录是 goweb3 项目的容器化部署基础设施,包含完整的多环境、多服务的 Docker 配置,支持本地开发、测试、发布等全生命周期管理。


一、目录结构总览

plainText

docker/ ├── docker-base/ # 基础服务镜像(中间件) │ ├── docker-mysql13306/ # MySQL 5.7.25 │ ├── docker-redis/ # Redis │ ├── docker-nginx/ # Nginx │ ├── docker-etcd/ # Etcd │ ├── docker-clickhouse/ # ClickHouse │ ├── docker-doris/ # Doris │ ├── docker-postgres/ # PostgreSQL │ ├── docker-consul/ # Consul │ ├── docker-cockroach/ # CockroachDB │ ├── docker-gitea/ # Gitea │ ├── docker-gitlab/ # GitLab │ ├── docker-portainer/ # Portainer │ └── website/ # Website 相关 │ ├── docker-website-web/ # Web 前端 │ ├── docker-website-admin/ # Admin 前端 │ ├── docker-website-grpc/ # gRPC 网关 │ └── docker-website-mobile/ # 移动端 ├── admin/ # 管理后台服务 │ ├── dev/ │ ├── test/ │ ├── release/ │ └── master/ ├── web/ # 前台服务 │ ├── dev/ │ ├── test/ │ ├── release/ │ └── master/ ├── grpc/ # gRPC 服务 │ ├── dev/ │ ├── test/ │ ├── release/ │ └── master/ └── backend/ # 后端服务 ├── dev/ ├── test/ ├── release/ └── master/

二、服务架构

服务类型端口说明
admin201管理后台服务
web202前台网站服务
grpc1201gRPC 服务
backend202后端服务

三、环境分层

lainText

┌─────────────────────────────────────────────────────┐ │ 环境层级 │ ├─────────────────────────────────────────────────────┤ │ local → 本地开发环境(IDE运行) │ │ ↓ │ │ dev → 开发环境(测试服务器) │ │ ↓ │ │ test → 测试环境(QA验证) │ │ ↓ │ │ release → 预发布环境(灰度发布) │ │ ↓ │ │ master → 生产环境(正式上线) │ └─────────────────────────────────────────────────────┘

四、核心配置解析

1. Dockerfile 标准模板

admin/dev/Dockerfile为例:

dockerfile

FROM alpine:latest RUN apk --no-cache add ca-certificates # 环境变量 ENV BasePath="/root/app" ENV SWAGGER_HOST="192.168.17.113:201/website-admin/v3" ENV SWAGGER_TITLE="有芯网站管理后台服务-AdminServer" # 创建目录 RUN mkdir -p /root/app RUN mkdir -p /root/app/logs WORKDIR /root/app # 复制配置和代码 COPY ./config /root/app/config COPY ./data /root/app/data ADD ./main /root/app/main RUN chmod +x ./main EXPOSE 201 ENTRYPOINT ["/root/app/main"]

特点

  • 基于alpine:latest轻量级镜像
  • 支持 HTTPS(ca-certificates)
  • 配置文件和数据目录分离
  • 可执行文件权限设置
2. docker-compose.yml 标准模板

yaml

version: "3" services: website-admin: build: context: "" dockerfile: Dockerfile image: website-admin container_name: website-admin hostname: website-admin user: root restart: always ports: - 201:201 environment: TZ: Asia/Shanghai volumes: - /opt/logs/website-admin:/root/app/logs - /opt/data/website-admin:/root/app/data

配置要点

字段说明
restart: always容器崩溃自动重启
TZ: Asia/Shanghai时区设置
volumes日志和数据持久化

五、基础服务镜像(docker-base)

1. MySQL 镜像

docker-mysql13306/Dockerfile

dockerfile

FROM mysql:5.7.25 # 配置中文支持 RUN apt-get update && \ apt-get install -y locales kde-l10n-zhcn && \ apt-get clean RUN locale-gen "zh_CN.UTF-8" ENV LANG=zh_CN.UTF-8 \ LANGUAGE=zh_CN:zh:en_US:en \ LC_ALL=zh_CN.UTF-8 \ TZ=Asia/Shanghai COPY my.cnf /etc/mysql/my.cnf EXPOSE 3306 CMD ["mysqld"]

特性

  • MySQL 5.7.25 版本
  • 支持中文 UTF-8 编码
  • 时区设置为上海
2. Redis 镜像

docker-redis/Dockerfile

dockerfile

FROM redis:latest ENV TZ=Asia/Shanghai COPY redis.conf /usr/local/etc/redis/redis.conf EXPOSE 6379 CMD ["redis-server", "/usr/local/etc/redis/redis.conf"]
3. Nginx 镜像

docker-nginx/Dockerfile

dockerfile

FROM nginx:latest ENV TZ=Asia/Shanghai COPY nginx.conf /etc/nginx/nginx.conf COPY conf.d/ /etc/nginx/conf.d/ EXPOSE 80 EXPOSE 443 CMD ["nginx", "-g", "daemon off;"]

六、配置文件结构

每个服务目录下的config/结构:

plainText

config/ ├── env.yml # 环境标识 ├── ichub-dev.yml # 应用主配置 ├── factroy/ # 代码生成模板 │ ├── template/ # 模板文件 │ │ ├── Dao.template │ │ ├── Service.template │ │ ├── Web.template │ │ └── ... │ └── factroy.yml # 模板配置 ├── godi/ # 依赖注入配置 │ ├── template/ # DI模板 │ └── di_define.ini # DI定义 ├── rule_define/ # 规则定义 │ ├── general/ # 通用规则 │ │ ├── func_dbquery/ # 数据库查询 │ │ ├── func_esquery/ # ES查询 │ │ └── ... │ └── cms/ # CMS规则 ├── es/ # ES配置 │ └── mapping/ # ES映射 │ ├── mapping.json │ └── settings.json └── templates/ # 视图模板 ├── index.html └── index.tmpl

env.yml

yaml

Env: ${ICHUB_ENV:dev} # local dev test release master raymond

七、部署脚本

每个环境目录下包含:

脚本说明
build.sh构建镜像
prepare.sh准备环境
rmi.sh删除镜像
clrDockerLog.sh清理日志

八、服务端口汇总

服务端口环境
admin201dev/test/release/master
web202dev/test/release/master
grpc1201dev/test/release/master
backend202dev/test/release/master
mysql13306docker-base
redis6379docker-base
etcd2379docker-base
clickhouse8123docker-base
nginx80/443docker-base

九、启动流程

plainText

1. 构建基础服务(可选) cd docker/docker-base/docker-mysql13306 docker-compose up -d 2. 构建应用服务 cd docker/admin/dev docker-compose up -d 3. 验证服务 curl http://localhost:201/health

十、设计特点

特点说明
多环境支持dev/test/release/master 四层环境
轻量级镜像基于 alpine,体积小、启动快
配置分离配置文件独立于镜像,便于管理
数据持久化日志和数据目录挂载到宿主机
自动重启容器崩溃自动恢复
时区统一所有容器使用 Asia/Shanghai
中文支持MySQL 等服务配置中文编码

十一、部署架构图

plainText

┌─────────────────────────────────────────────────────────────┐ │ Docker Compose │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ website- │ │ website- │ │ website- │ │ │ │ admin │ │ web │ │ grpc │ │ │ │ (port 201)│ │ (port 202) │ │ (port 1201) │ │ │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ docker-base │ │ │ │ MySQL Redis Etcd ClickHouse Nginx │ │ │ │ 13306 6379 2379 8123 80/443 │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/22 12:58:06

SAP SD进阶:客户物料主数据KNMT底表深度解析与KOTG条件表的实战应用

SAP SD进阶:客户物料主数据KNMT底表深度解析与KOTG条件表的实战应用在SAP SD模块的实施与运维中,客户物料主数据管理往往是业务需求最密集、技术复杂度最高的领域之一。当不同客户对同一物料使用截然不同的命名规则时(比如"棒棒冰"…

作者头像 李华
网站建设 2026/6/22 10:56:27

2026年度实战向盘点:9款主流「AI面试」工具深度横评与选型指北

在探讨了市面上诸多候选辅助工具的底层大模型能力之后,许多求职者依然面临一个核心困境:大模型跑分开源榜单名列前茅,为何在真实的打断、追问、重口音等强压环境下依然会显得不知所措?对于求职者而言,功能界面的丰富度…

作者头像 李华
网站建设 2026/6/20 22:34:06

终极家庭游戏串流服务器搭建指南:打造专属云游戏平台

终极家庭游戏串流服务器搭建指南:打造专属云游戏平台 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 你是否曾经梦想过在任何设备上流畅运行高性能PC游戏?无…

作者头像 李华