需求:将已经写好的SpringBoot程序通过Docker部署到服务器上,实现可移植部署。
前提准备:
在阿里云下载centos,然后到虚拟机安装。步骤省略。
1:安装yum工具
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
2:更新本地镜像源
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
目的是换成国内的镜像源,下载镜像的速度会快点。
3:安装Docker社区免费版
yum install -y docker-ce
4:关闭防火墙&启动Docker
Docker应用需要用到各种端口,需要逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!
# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
systemctl start docker # 启动docker服务
1:下载Docker compose
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
然后提升权限,首先你要是管理员,如果不是,使用su命令提高权限。
# 修改权限
chmod +x /usr/local/bin/docker-compose
然后在本地准备好文件就可以部署了。
1编写Dockerfile文件
在 Spring Boot 项目根目录下新建一个名为 Dockerfile 的文件
# 使用官方 OpenJDK 8 映像作为基础镜像
FROM openjdk:8-jdk-alpine
# 将当前目录下的所有 jar 包复制到容器中的 /app 目录下
COPY *.jar /app/
# 设置容器启动时执行的命令
CMD ["java", "-jar", "/app/myproject.jar"]
2.编写 docker-compose.yml 文件
在 Spring Boot 项目根目录下新建一个名为 docker-compose.yml 的文件
version: "3"
services:
# 定义 Spring Boot 应用程序所需要的服务(容器)
myproject:
# 构建镜像的路径。"." 表示 Dockerfile 文件所在的当前目录
build: .
# 指定容器名称
container_name: myproject
# 容器所要使用的端口号
ports:
- "8080:8080"
# 指定容器启动后所需要等待的其它服务的启动时间
depends_on:
- database
- redis
# 环境变量设置
environment:
- SPRING_PROFILES_ACTIVE=prod
- SPRING_DATASOURCE_URL=jdbc:mysql://database:3306/mydb?useSSL=false
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=123456
- SPRING_REDIS_HOST=redis
# 定义数据库服务(容器)
database:
image: mysql:5.7
container_name: database
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_DATABASE=mydb
# 定义 Redis 服务(容器)
redis:
image: redis:alpine
container_name: redis
ports:
- "6379:6379"
然后将程序进行构建并运行就可以了。