温馨提示
×
立即登录
立即注册
云计算
编程语言
网络安全
智能运维
大数据
深度学习
登 录
注册有礼
控制台
用户中心
财务账户
优惠券
充值
退出
云服务器
香港服务器
高防服务器
最新更新
网站标签
地图导航
产品
首页
>
问答
>
智能运维
>
如何利用Ubuntu Docker搭建微服务
如何利用Ubuntu Docker搭建微服务
ubuntu
小樊
41
2025-12-02 16:32:01
栏目:
智能运维
在 Ubuntu 上使用 Docker 搭建微服务的实操指南
一 环境准备与安装
更新系统并安装依赖
sudo apt update && sudo apt upgrade -y
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
添加 Docker 官方 GPG 与 APT 源(使用推荐的 keyrings 方式)
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo “deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
安装 Docker 引擎
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io
验证安装
sudo docker run --rm hello-world
可选 安装 Docker Compose(便于多容器编排)
sudo apt install -y docker-compose
docker-compose --version
将当前用户加入 docker 组(避免每次 sudo)
sudo usermod -aG docker $USER && newgrp docker 以上步骤覆盖在 Ubuntu 上安装 Docker 与 Docker Compose 的通用做法,适用于后续微服务开发与部署。
二 项目结构与镜像构建
推荐目录结构
services/
gateway/
Dockerfile
target/gateway.jar
user-service/
Dockerfile
target/user-service.jar
order-service/
Dockerfile
target/order-service.jar
nginx/
Dockerfile
nginx.conf
dist/
docker-compose.yml
Java 微服务 Dockerfile 示例(Spring Boot)
FROM openjdk:11-jdk-slim
WORKDIR /app
COPY target/*.jar app.jar
EXPOSE 8080
CMD [“java”,“-jar”,“/app/app.jar”]
Node.js 微服务 Dockerfile 示例
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD [“node”,“server.js”]
前端 Nginx 示例(将前端静态资源由 Nginx 托管)
FROM nginx:1.25-alpine
COPY nginx.conf /etc/nginx/nginx.conf
COPY dist/ /usr/share/nginx/html
EXPOSE 80 以上示例涵盖常见的
Java/Node.js
微服务以及
Nginx
前端托管镜像写法,便于在同一仓库中统一管理多服务镜像。
三 使用 Docker Compose 编排多服务
示例 docker-compose.yml(含数据库、缓存、注册中心、网关与业务服务)
version: “3.8”
services:
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD=RootPass!23
MYSQL_DATABASE=appdb
volumes:
mysql-data:/var/lib/mysql
ports:
“3306:3306”
redis:
image: redis:7-alpine
ports:
“6379:6379”
nacos:
image: nacos/nacos-server:v2.4.3
environment:
MODE=standalone
ports:
“8848:8848”
gateway:
build: ./services/gateway
ports:
“8080:8080”
depends_on:
nacos
user-service
order-service
user-service:
build: ./services/user-service
environment:
SPRING_PROFILES_ACTIVE=prod
SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/appdb?useSSL=false&serverTimezone=UTC
SPRING_REDIS_HOST=redis
depends_on:
mysql
redis
order-service:
build: ./services/order-service
environment:
SPRING_PROFILES_ACTIVE=prod
SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/appdb?useSSL=false&serverTimezone=UTC
SPRING_REDIS_HOST=redis
depends_on:
mysql
redis
nginx:
build: ./services/nginx
ports:
“80:80”
volumes:
mysql-data:
常用命令
构建并启动:docker-compose up --build -d
查看状态:docker-compose ps
查看日志:docker-compose logs -f [service]
重启服务:docker-compose restart [service]
滚动更新:docker-compose up -d --build --no-deps [service]
停止清理:docker-compose down -v 上述编排示例展示了在同一网络中通过服务名(如
mysql/redis/nacos
)进行服务发现,避免硬编码
localhost
;并给出日常运维常用命令。
四 配置与网络要点
服务发现与连接
在
Spring Boot
的 application.yml 中使用服务名作为主机名(例如:spring.datasource.url 中的
mysql:3306
、spring.redis.host 为
redis
),与 Compose 默认网络一致即可互通。
数据与配置持久化
数据库使用
named volume
(如示例中的
mysql-data
)持久化数据;敏感信息通过
environment
或
.env
文件注入,避免写死在镜像中。
启动顺序与健康检查
Compose 的 depends_on 不保证应用就绪,生产可用健康检查与重试机制(如 Spring Cloud LoadBalancer 重试、应用内启动探针)提升稳定性。
前端与网关路由
通过
Nginx
托管前端静态资源并反向代理 API 到
gateway:8080
;API 路径统一前缀(如
/api/
)便于路由与鉴权。
日志与排错
统一结构化日志(JSON),使用 docker-compose logs -f 实时排查;必要时进入容器:docker-compose exec [service] sh。
五 扩展与运维建议
编排与规模
单机多服务用
Docker Compose
足够;需要集群高可用与自动扩缩容时,可迁移到
Docker Swarm
或
Kubernetes
。
监控与日志
指标与可视化:Prometheus + Grafana 监控容器与应用指标;日志聚合:ELK(Elasticsearch + Logstash + Kibana)或 Loki + Promtail 收集与检索容器日志。
持续交付
使用 GitHub Actions/GitLab CI 构建镜像、推送到镜像仓库(如 Docker Hub/私有仓库),在目标环境执行 docker-compose pull && docker-compose up -d 实现零停机滚动升级(配合健康检查与优雅停机)。
0
赞
0
踩
最新问答
如何使用Yum在Ubuntu中安装软件
Ubuntu Yum命令详解及实例
Yum如何帮助Ubuntu管理软件版本
Ubuntu Yum命令报错怎么解决
Yum在Ubuntu中搜索软件包的技巧
Ubuntu Yum命令行操作基础指南
如何确保Debian Strings的兼容性
Debian Strings与版本控制系统的关系
如何定制Debian Strings以满足需求
相关问答
利用云服务器怎么赚钱
ubuntu域名能做什么用
如何利用Ubuntu Docker进行微服务架构
如何利用CentOS镜像搭建测试环境
如何用Ubuntu Docker搭建微服务架构
如何在ubuntu上利用docker搭建开发环境
ubuntu域名能做社交吗
如何利用Ubuntu提升Swagger开发效率
Ubuntu Docker如何部署微服务
相关标签
ubuntu云服务器
ubuntu18.04
ubuntu端口
Ubuntu14
ubuntu16.04
Ubuntu14.04
ubuntu20.04
ubuntu18
ubuntu20
ubuntu20.4
ubuntu16
ubuntu代理
ubuntu连接服务器
ubuntu中文输入法
ubuntu安装gcc
ubuntu手机系统
ubuntu关机
ubuntu关闭防火墙
ubuntu安装jdk
Ubuntu免费云主机