腾讯云轻量服务器部署Spring Boot应用用Docker怎么操作?

在腾讯云轻量应用服务器(Lighthouse)上通过 Docker 部署 Spring Boot 应用,流程相对标准化。以下是完整的操作步骤,涵盖从环境准备到容器运行的全过程。

1. 前置准备

在开始之前,请确保你已完成以下准备工作:

  • 购买并登录:已购买腾讯云轻量应用服务器,并获取了 IP 地址、用户名(通常为 root)和密码/SSH 密钥。
  • 安装 Docker:轻量应用服务器默认通常未预装 Docker,需要先安装。
  • 构建镜像:本地或 CI/CD 流水线中已将 Spring Boot 项目打包成 JAR 包,并编写好 Dockerfile

2. 安装 Docker 环境

登录到轻量服务器后,执行以下命令安装 Docker 和 Docker Compose(推荐组合使用):

# 更新软件源
sudo apt-get update

# 安装 Docker 依赖包
sudo apt-get install -y ca-certificates curl gnupg lsb-release

# 添加 Docker 官方 GPG 密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 设置仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装 Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 启动 Docker 服务并设置为开机自启
sudo systemctl start docker
sudo systemctl enable docker

# 验证安装
docker --version
docker compose version

注意:如果使用的是 CentOS 系统,请将上述 apt-get 相关命令替换为 yum 命令,或使用 Docker 官方的一键安装脚本。


3. 上传代码与构建镜像

你有两种主要方式将应用放入服务器:

方案 A:本地构建后上传镜像(推荐用于生产环境)

  1. 在本地电脑(开发机)上构建镜像:

    # 假设你的 Dockerfile 在当前目录
    docker build -t my-spring-boot-app:latest .
    
    # 查看镜像 ID
    docker images
  2. 导出镜像为 tar 文件:
    docker save -o app.tar my-spring-boot-app:latest
  3. 使用 scp 或 SFTP 工具将 app.tar 传输到轻量服务器:
    scp app.tar root@<服务器IP>:/tmp/
  4. 在服务器上加载镜像:
    cd /tmp
    docker load -i app.tar

方案 B:直接在服务器上构建(适合测试或小项目)

  1. 将源码上传至服务器:
    scp -r ./project root@<服务器IP>:/opt/myapp
  2. 进入目录并构建:
    cd /opt/myapp
    docker build -t my-spring-boot-app:latest .

4. 编写 Dockerfile (参考模板)

如果你的项目还没有 Dockerfile,请在项目根目录下创建它:

# 使用 OpenJDK 基础镜像
FROM openjdk:17-jdk-slim

# 设置工作目录
WORKDIR /app

# 复制 jar 包
COPY target/my-spring-boot-app.jar app.jar

# 暴露端口 (根据 application.yml 配置修改)
EXPOSE 8080

# 启动命令
ENTRYPOINT ["java", "-jar", "app.jar"]

提示:Spring Boot 的 application.ymlapplication.properties 中,建议将 server.port 设为 8080(或其他非特权端口),避免直接使用 80 或 443 端口。


5. 运行容器

方式一:使用 docker run 命令

这是最简单的方式,适合快速验证:

docker run -d 
  --name spring-boot-app 
  -p 8080:8080 
  -e SPRING_PROFILES_ACTIVE=prod 
  my-spring-boot-app:latest

参数说明:

  • -d: 后台运行。
  • --name: 容器名称。
  • -p: 映射宿主机端口 8080 到容器内部 8080。
  • -e: 设置环境变量(如数据库连接串、环境配置等)。

方式二:使用 Docker Compose (推荐管理多容器)

创建 docker-compose.yml 文件:

version: '3'
services:
  app:
    image: my-spring-boot-app:latest
    container_name: spring-boot-app
    ports:
      - "8080:8080"
    environment:
      - SPRING_PROFILES_ACTIVE=prod
      - DB_HOST=mysql-container
    restart: always
    networks:
      - app-net

networks:
  app-net:
    driver: bridge

启动命令:

docker compose up -d

6. 配置腾讯云防火墙与安全组

Docker 容器内的端口必须对公网开放才能被访问。

  1. 登录 腾讯云控制台
  2. 进入 轻量应用服务器 页面,点击你的实例。
  3. 找到 防火墙安全组 标签页。
  4. 添加入方向规则:
    • 协议类型:TCP
    • 端口范围:8080 (或你配置的端口)
    • 授权对象:0.0.0.0/0 (允许所有 IP,生产环境建议限制特定 IP)
  5. 保存规则。

重要:轻量服务器的“防火墙”设置是独立于操作系统的。即使 Docker 运行正常,如果云控制台的安全组没放行,外部也无法访问。


7. 验证与监控

  • 查看日志
    docker logs -f spring-boot-app
  • 查看容器状态
    docker ps
  • 访问应用
    在浏览器输入 http://<服务器公网IP>:8080,检查是否返回预期的接口或页面。

常见问题排查

  1. 无法访问端口

    • 检查云服务器控制台的安全组规则。
    • 检查 Linux 内部防火墙(如有):sudo ufw statussudo firewall-cmd --list-all
    • 确认 application.yml 中的 server.address 是否为 0.0.0.0(默认通常是,但需留意)。
  2. 内存不足

    • 轻量服务器配置较低时,Spring Boot 可能因 OOM 崩溃。可以在启动命令中增加 JVM 参数:
      docker run ... -e JAVA_OPTS="-Xms256m -Xmx512m" ...
  3. 中文乱码

    • 确保 Dockerfile 中设置了 UTF-8 编码,或在 JAVA_OPTS 中添加 -Dfile.encoding=UTF-8

通过以上步骤,你就可以成功在腾讯云轻量应用服务器上通过 Docker 部署并运行 Spring Boot 应用了。

未经允许不得转载:CLOUD云枢 » 腾讯云轻量服务器部署Spring Boot应用用Docker怎么操作?