CentOS7下从安装Docker到Spring Boot的Java Web项目自动部署的完整过程

注:别看步骤多,熟悉后很简洁,并且可以体验到自动部署到docker的爽利感觉

一、Docker篇
一)Docker安装
1、Docker 要求 CentOS 系统的内核版本高于 3.10,命令:uname -r
2、device-mapper-persistent-data和lvm2是devicemapper存储驱动程序所必需的,命令:sudo yum install -y yum-utils device-mapper-persistent-data lvm2
3、添加阿里云软件源信息,命令:sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4、更新 yum 缓存,命令:sudo yum makecache fast
6、安装Docker-ce(社区版),命令:sudo yum -y install docker-ce
7、启动 Docker 后台服务,命令:sudo systemctl start docker,(重启命令:sudo systemctl restart docker)

二)镜像查找及容器安装
额外篇(利用阿里云的镜像加速器,加快pull镜像速度,非常有必要,默认是从Docker Hub上pull,速度很慢)
登录阿里云-》控制台-》产品与服务-》容器镜像服务-》镜像加速器-》账户专属的加速器地址(我的为:https://feofo8wj.mirror.aliyuncs.com
配置镜像加速器,通过修改daemon配置文件/etc/docker/daemon.json来使用加速器,命令内容如下:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://feofo8wj.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

拉取Mariadb镜像并建立容器
a)查找镜像命令:docker search mariadb
b)pull镜像命令:docker pull mariadb
c)用镜像建立mariadb的容器:命令内容如下(其中的‘chamulong’是我的一个centos账号名):

docker run --name mariadb -v /home/chamulong/docker_mariadb_data:/var/lib/mysql
p 3306:3306
e MYSQL_ROOT_PASSWORD=root
e MYSQL_USER=root
e MYSQL_PASSWORD=root
e MYSQL_ROOT_HOST=%
d mariadb

d)启动mariadb数据库,命令:docker start mariadb

三)给Docker开启远程访问(注意防火墙设置)
编辑Docker宿主机文件,命令:sudo vi /lib/systemctl/system/docker.service
修改以ExecStart为开头的行(其中端口2375可自行定义别的端口),命令:ExecStart=/user/bin/docker daemon -H fd:// -H tcp://0.0.0.0:2375
保存修改后的文件
通知Docker服务做出的修改,命令:sudo systemctl-reload
重启Docker服务,命令:sudo service docker restart
测试是否可以连接到Docker API,命令:curl http://localhost:2375/version
经过以上步骤,CentOS下的docker项目运行环境都已经准备完毕(不需要额外安装Tomcat容器)

二、将Spring Boot 项目部署到Docker容器里运行
1、在IDEA上安装Docker插件(Docker integration插件,不是必须,但有了该插件可以更方便的进行部署),由于未知原因,在线安装Docker integration经常失败,所以通过
离线安装的方式进行安装:
a)在IDEA上确定Docker插件对应的版本(比较重要,版本不一致会安装不上),file-》Settings-》PLugins-》搜索框中输入‘docker’进行查询,找到其版本号,一般形如:Version:173.3727.15
b)在官网:http://plugins.jetbrains.com/plugin/7724-docker-integration 上面下载对应版本的插件压缩包,离线安装:file-》Settings-》PLugins-》Install plugin from disk-》选择刚下载的插件压缩包,重启IDEA

2、创建Dockerfile
在项目根目录下创建Dockerfile文件(没有后缀,就是pom.xml文件所在目录)
Dockerfile文件的内容,示例如下,至于Dockerfile文件中全部参数的意义查询官网或者相关的文章

FROM java:8
MAINTAINER chamu
ADD /target/sparrow-0.0.1-SNAPSHOT.jar /usr/project/sparrow-0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java" ,"-jar","/usr/project/sparrow-0.0.1-SNAPSHOT.jar"]
        根据Docker插件配置相关参数(其中运行命令不是必须,主要为了调试方便,如果不需要自动执行,Run built  image 不勾选)
    a)进入编辑窗口:IDEA工具栏中运行按钮前面下拉选项选中‘ Edit Configurations’
    b)参数编辑窗口内容填写:
Dockerfile:选中之前创建的Dockfile文件
Images tag:输入镜像名称,一般用项目名称,如sparrow
Run built images:勾选上
Container name:输入容器名称,我填的和镜像名称一样,如sparrow
Command(不是必填项,该行可以在docker命令行中输入):如:--link mariadb:mariadb 199cc294e316(解释一下:通过--link,连接两个容器,
第一个参数是容器名称,第二个是镜像的名称 镜像的ID,这里是连接mariadb数据库)
Bind ports:docker和宿主机的端口映射,如:0.0.0.0:8080:8080
Bind mounts:挂载宿主机文件或目录到容器数据卷(用于数据的永久保存,如上传资料的永久保存,不会因为容器的删除而消失),如:/home/uploadfile:/home/uploadfile
v后面的映射关系是"宿主机文件/目录:容器里对应的文件/目录",其中,宿主机上的文件/目录是要提前存在的,容器里对应的文件/目录会自动创建。

Command preview:一切配置好后的生成的命令行,如:docker build -f DockerFile -t sparrow . && docker run -p 0.0.0.0:8080:8080 -v /home/uploadfile:/home/uploadfile --name sparrow sparrow --link mariadb:mariadb 199cc294e316
IDEA如果没有勾选‘Run built  image ’,则手动执行命令来运行WEB项目:docker run -p 0.0.0.0:8080:8080 -v /home/uploadfile:/home/uploadfile --name sparrow sparrow --link mariadb:mariadb 199cc294e316

项目打成jar包,选择IDEA底部标签’Terminal‘,执行命令:mvn package -DskipTests,然后在Target目录下就能看见生成的jar包了, IDEA工具栏中运行按钮前面下拉选项选中‘ Docker’,点击运行按钮。
至此,项目已经成功在docker中运行了,可以用浏览器访问项目了,以后项目有变动,直接按照’二大项中第5)执行,新版本项目就部署上去了,相当方便 。

转载于:https://blog.51cto.com/3058076/2368474

发布了140 篇原创文章 · 获赞 200 · 访问量 17万+
展开阅读全文
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览