腾讯轻量应用服务器springboot docker容器?

在腾讯云的轻量应用服务器(Lighthouse)上部署 Spring Boot 应用并运行在 Docker 容器中,是一个非常主流且高效的方案。这种方式实现了环境隔离、一键部署、易于迁移

以下是完整的操作指南,分为 准备工作、Docker 安装、Spring Boot 打包、Dockerfile 编写、容器部署、域名/网络配置 六个步骤。


✅ 前提条件

  1. 一台腾讯云轻量应用服务器(推荐 Ubuntu 20.04/22.04 或 CentOS 7/8)。
  2. 已开通服务器,并配置了安全组规则(开放端口如 80, 443, 8080 等)。
  3. 本地开发环境已准备好 Spring Boot jar 包。

🚀 第一步:登录服务器并安装 Docker

SSH 登录到你的轻量应用服务器:

ssh root@你的服务器IP

1. 卸载旧版本(如果存在)

sudo apt-get remove docker docker-engine docker.io containerd runc  # Ubuntu/Debian
# 或
sudo yum remove docker*  # CentOS

2. 安装 Docker Engine(推荐使用官方脚本快速安装)

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

3. 启动 Docker 并设置开机自启

sudo systemctl start docker
sudo systemctl enable docker

4. 验证安装

docker --version
docker run hello-world

💡 建议:将当前用户加入 docker 组,避免每次都要加 sudo

sudo usermod -aG docker $USER
newgrp docker

📦 第二步:准备 Spring Boot 应用

1. 本地打包

在你的本地项目中执行:

mvn clean package -DskipTests

生成的 .jar 文件通常在 target/ 目录下,例如 myapp-0.0.1-SNAPSHOT.jar

2. 上传到服务器

使用 scp 命令将 jar 包上传到服务器:

scp target/myapp-0.0.1-SNAPSHOT.jar root@你的服务器IP:/opt/app/

在服务器上创建目录:

mkdir -p /opt/app

🐳 第三步:编写 Dockerfile

/opt/app/ 目录下创建 Dockerfile

# 使用官方精简版 JDK 镜像
FROM openjdk:17-jdk-slim

# 设置工作目录
WORKDIR /app

# 复制 jar 包到容器内
COPY myapp-0.0.1-SNAPSHOT.jar app.jar

# 暴露端口(根据你 Spring Boot 配置的端口修改,默认是 8080)
EXPOSE 8080

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

⚠️ 注意:如果你的 Spring Boot 应用需要连接数据库,请确保数据库地址是公网 IP 或使用腾讯云 CDB,并在 Spring Boot 配置中正确设置。


🛠️ 第四步:构建 Docker 镜像

/opt/app/ 目录下执行:

docker build -t my-springboot-app .

等待构建完成,可通过以下命令查看镜像:

docker images

▶️ 第五步:运行 Docker 容器

docker run -d 
  --name my-springboot-container 
  -p 8080:8080 
  -v /opt/app/logs:/app/logs 
  my-springboot-app

参数说明:

  • -d:后台运行
  • --name:容器名称
  • -p 8080:8080:将宿主机的 8080 端口映射到容器的 8080 端口
  • -v:挂载日志目录(可选,便于查看日志)

检查容器是否运行:

docker ps

🌐 第六步:访问与网络配置

1. 检查防火墙/安全组

  • 腾讯云控制台 → 轻量应用服务器 → 防火墙:确保放行了 8080 端口(TCP)。
  • 如果使用云防火墙,也需放行。

2. 浏览器访问

在浏览器中输入:

http://你的服务器IP:8080

如果能正常返回接口数据或页面,说明部署成功!


🔧 高级优化建议

1. 使用 Nginx 反向X_X + HTTPS(推荐)

直接暴露 8080 端口不安全且不美观。建议安装 Nginx 做反向X_X:

sudo apt install nginx   # 或 yum install nginx

编辑 Nginx 配置文件 /etc/nginx/sites-available/default 或新建一个 conf:

server {
    listen 80;
    server_name yourdomain.com;  # 替换为你的域名

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

重启 Nginx:

sudo nginx -t
sudo systemctl restart nginx

然后在腾讯云控制台为域名申请 SSL 证书,并配置 HTTPS。

2. 使用 Docker Compose 管理(更优雅)

创建 docker-compose.yml

version: '3.8'
services:
  springboot-app:
    image: my-springboot-app
    container_name: my-springboot-container
    ports:
      - "8080:8080"
    volumes:
      - ./logs:/app/logs
    environment:
      - TZ=Asia/Shanghai
    restart: always

启动:

docker compose up -d

3. 日志查看

docker logs -f my-springboot-container

❓ 常见问题排查

问题 可能原因 解决方案
无法访问端口 安全组未放行 登录腾讯云控制台,添加防火墙规则放行 8080
容器启动后立即退出 Java 启动失败 docker logs <container_id> 查看错误日志
内存不足 JVM 堆内存过大 在 Dockerfile 中添加 -Xmx512m -Xms256m 参数
数据库连接超时 数据库不在同一内网 使用腾讯云 CDB 公网地址,或开启白名单

✅ 总结

通过 Docker 部署 Spring Boot 到腾讯云轻量应用服务器,优势在于:

  • 环境一致:开发、测试、生产环境完全一致。
  • 资源隔离:不影响服务器其他服务。
  • 易于维护:通过 docker compose 可轻松升级、回滚。

如果你希望进一步自动化,可以结合 Jenkins/GitLab CI 实现代码提交后自动构建镜像并部署到服务器。

未经允许不得转载:CLOUD技术博 » 腾讯轻量应用服务器springboot docker容器?