docker-compose部署springboot项目

2019/12/11 10:58
阅读数 475

因为本人最近玩过用docker-compose部署项目的经历,所以就简单介绍下自己研究出来的经验。首先用docker-compose部署项目,要先拥有一个docker环境,一个springboot项目,本人用的的在window10下的子系统Ubuntu中安装的docker,装好docker后还要安装docker-compose,这里不介绍docker及docker-compose的安装,可自行百度,很简单的。springboot项目就不用说了,可用idea工具创建一个项目。

        准备工作完了,说说docker-compose部署项目需要的文件:docker-compose .yml、Dockerfile,

        Dockerfile的作用是根据一系列命令及springboot项目jar包生成镜像;

        docker-compose.yml能够根据已存在的镜像及官方规定的关键字命令生成所需要的容器,docker-compose.yml中配置的每个容器都可以作为一个服务,可以被别的服务引用,docker-compose.yml文件有三个版本,在这里我用的是三。

本次实例中saas项目服务就依赖到了redis服务、mysql服务,下面是本人实际开发中写的两个文件的样板,仅供参考,想了解更多可以查看官方文档。

1、docker-compose.yml配置文件介绍:

version: "3"
services:
 #指定服务名称
 mysql:
   #指定服务使用的镜像
   image: mysql:5.7
   #指定容器名称
   container_name: saasmysql
   restart: always
   #指定服务运行的端口
   ports :
     "3306:3306"
   #指定容器的环境变量
   environment:
#数据库密码
     MYSQL_ROOT_PASSWORD=123456
       #创建的库
     MYSQL_DATABASE=saas
    #允许多IP连接数据库
     MYSQL_ROOT_HOST=%  
 redis:
   image: redis
   #指定容器名称
   container_name: saasredis
   ports:
     "6379:6379"
 #指定服务名称
 saas:
镜像名:版本
image: saas:v1
   container_name: saas
   #restart: always
   #指定服务运行的端口
   ports:
     "10083:10083"
   #启动时,要覆盖的环境变量配置
   environment:
  #数据库IP
     DATABASE_HOST=mysql
     #数据库用户名
     DATABASE_USER=root
     #数据库密码
     DATABASE_PASSWORD=123456
     #初始化的数据库
     DATABASE_NAME=saas
     #数据库端口
     DATABASE_PORT=3306
     #redis的IP
     REDIS_HOST=redis
     #redis的端口
     REDIS_PORT=6379
   #依赖的服务
   depends_on:
     mysql
     redis

2、部署步骤

创建两个文件夹:例如创建saas文件夹,mkdir saas,进入saas文件夹:cd saas,然后创建saasapp文件,mkdir saasapp;

saas文件夹中中的内容:

saasapp文件夹的内容:

Dockerfile文件为制作项目镜像的配置文件,saas-be-0.0.1-SNAPSHOT.jar为项目打包后的jar包

Dockerfile文件内容:

FROM java:8
ADD saas-be-0.0.1-SNAPSHOT.jar app.jar
RUN bash -'touch /app.jar'
EXPOSE "10083"
ENTRYPOINT sleep 60 && java -Dspring.profiles.active=prod -Dspring.datasource.hostname=$DATABASE_HOST:$DATABASE_PORT -Dspring.datasource.username=$DATABASE_USER -Dspring.datasource.password=$DATABASE_PASSWORD -Dspring.redis.host=$REDIS_HOST -Dspring.redis.port=$REDIS_PORT -Djava.security.egd=file:/dev/./urandom -jar /app.jar

文件准备好后,在saasapp目录下执行

docker build -saas:v1 .

生成名字为saas,版本号为v1的项目镜像,通过

docker images

可查看生成的镜像

然后在saas目录下执行

docker-compose up

生成并运转docker-compose.yml配置的容器

运行成功后,项目也就运行正常,在saas目录下执行

docker-compose ps

可发现有三个运行的容器

停止且删除容器:执行docker-compose down

版本升级时:需重新上传jar包到saas/saasapp下,在saasapp下执行

docker build -t saas:v2 .

生成新版本的镜像,然后在saas目录下执行

vi docker-compose.yml

编辑docker-compose.yml文件,点击 i 即可开始更改操作,修改图中的选项

更改为

image: saas:v2

点击 esc,然后shift+: 输入wq,回车即更改成功,再执行  

docker-compose up

版本2即部署成功

在这说一下可能遇到的坑,如果你按照我上面写的部署项目,启动时可能会项目连接数据库被拒绝,这个情况可以修改下Dockerfile文件中的

可以把这个值改70或者80,大一点,这个好像跟服务器的性能有关,具体原因暂时没找到,以上是我用docker-compose部署的玩法,瑕疵肯定会有的,不足的地方请多指正,有问题的也可以咨询我,一起学习啦...

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部