需求概述
我本地有一个springboot开发的web项目,涉及到到mysql,redis等环境,有一台centos系统的云服务器裸机,我想通过docker来部署,该如何来实现
部署Spring Boot应用程序的基本步骤
-
安装 Docker 和 Docker Compose 首先需要在云服务器上安装 Docker 和 Docker Compose,这可以通过运行以下命令完成:
$ sudo yum install docker $ sudo systemctl start docker $ sudo systemctl enable docker $ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose -
创建 Dockerfile 在项目根目录下创建一个名为 Dockerfile 的文件,并添加以下内容:
FROM openjdk:11 VOLUME /tmp ADD target/myproject-0.0.1-SNAPSHOT.jar myproject.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/myproject.jar"]这个文件定义了一个基于 OpenJDK 11 的 Docker 镜像,将 Spring Boot 应用程序打包成一个可执行的 JAR 文件,并在容器启动时运行。
-
构建 Docker 镜像 在项目根目录下运行以下命令构建 Docker 镜像:
$ sudo docker build -t myproject:latest . -
创建 Docker Compose 文件 在项目根目录下创建一个名为 docker-compose.yml 的文件,并添加以下内容:
version: '3' services: myproject: image: myproject:latest container_name: myproject ports: - "8080:8080" environment: SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/mydb?useSSL=false SPRING_DATASOURCE_USERNAME: myuser SPRING_DATASOURCE_PASSWORD: mypassword SPRING_REDIS_HOST: redis SPRING_REDIS_PORT: 6379 depends_on: - mysql - redis mysql: image: mysql:5.7 container_name: mysql environment: MYSQL_ROOT_PASSWORD: rootpassword MYSQL_DATABASE: mydb MYSQL_USER: myuser MYSQL_PASSWORD: mypassword ports: - "3306:3306" redis: image: redis:5 container_name: redis ports: - "6379:6379"这个文件定义了一个 Docker Compose 应用程序,其中包含三个服务:myproject、mysql 和 redis。myproject 服务使用先前构建的 Docker 镜像运行 Spring Boot 应用程序,并连接到 mysql 和 redis 数据库。
-
启动 Docker Compose 应用程序
在项目根目录下运行以下命令启动 Docker Compose 应用程序:$ sudo docker-compose up -d这个命令将启动 Docker Compose 应用程序,并在后台运行。
-
测试应用程序
最后,在浏览器中输入服务器的公共 IP 地址和应用程序的端口号(默认为8080),并在 URL 中添加 /health 或 /actuator/health 路径来测试应用程序的运行状况。如果应用程序正在运行,则应该收到 HTTP 200 OK 响应。
以上是基本的部署流程,当然在实际应用中可能还需要进行更多的配置和优化,具体可以根据需要进行调整。