Docker 部署SpringBoot项目整合 Redis 镜像做访问计数Demo

最终效果如下

大概就几个步骤

  • 1.安装 Docker CE
  • 2.运行 Redis 镜像
  • 3.Java 环境准备
  • 4.项目准备
  • 5.编写 Dockerfile
  • 6.发布项目
  • 7.测试服务

环境准备

  • 系统:Ubuntu 17.04 x64
  • Docker 17.12.0-ce
  • IP:45.32.31.101

一、安装 Docker CE

国内不建议使用:“脚本进行安装”,会下载安装很慢,使用步骤 1 安装,看下面的链接:常规安装方式

1.常规安装方式

Ubuntu 17.04 x64 安装 Docker CE

http://www.ymq.io/2018/01/11/Docker-Install-docker-ce

2.脚本进行安装

国内安装不建议使用脚本

安装Docker CE

$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh<output truncated>If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:sudo usermod -aG docker your-userRemember that you will have to log out and back in for this to take effect!WARNING: Adding a user to the "docker" group will grant the ability to runcontainers which can be used to obtain root privileges on thedocker host.Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surfacefor more information.

验证Docker CE

通过运行hello-world 镜像 验证是否正确安装了Docker CE

$ sudo docker run hello-world
root@souyunku:~# sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              f2a91732366c        7 weeks ago         1.85kB

二、运行 Redis 镜像

1.运行镜像

$ docker run --name redis-6379 -p 6379:6379 -d redis
Unable to find image 'redis:latest' locally
latest: Pulling from library/redis
c4bb02b17bb4: Pull complete
58638acf67c5: Pull complete
f98d108cc38b: Pull complete
83be14fccb07: Pull complete
5d5f41793421: Pull complete
ed89ff0d9eb2: Pull complete
Digest: sha256:0e773022cd6572a5153e5013afced0f7191652d3cdf9b1c6785eb13f6b2974b1
Status: Downloaded newer image for redis:latest
2f1f20f672e386a61644e1c08232ea34bdfd6a0c244b55fa833fcfd6dd207288

2.检查镜像

查看镜像

root@souyunku:~# docker images redis
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
redis               latest              1e70071f4af4        4 weeks ago         107MB

查看镜像进程

root@souyunku:~# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
2f1f20f672e3        redis               "docker-entrypoint.s…"   14 seconds ago      Up 14 seconds       0.0.0.0:6379->6379/tcp   redis-6379

查看容器进程

root@souyunku:~# docker container ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
2f1f20f672e3        redis               "docker-entrypoint.s…"   7 minutes ago       Up 7 minutes        0.0.0.0:6379->6379/tcp   redis-6379

3.测试Redis服务

通过 redis-cli 连接Redis 服务,测试存储数据

root@souyunku:~# docker run -it --link redis-6379:redis --rm redis redis-cli -h redis -p 6379
redis:6379> set count 1
OK
redis:6379> get count
"1"
redis:6379> exit
root@souyunku:~#

三、Java 环境准备

注意:阅读以下步骤!!!

  • 1.Java 环境是为了,编译Github Maven SpringBoot 示例项目,准备

  • 2.或者自己在本地编译好上传也行,那么以下Java 环境,安装:Jdk,Maven,Git,就可以不用配置

1.安装 Jdk

下载JDK 方式:1

下载Linux环境下的jdk1.8,请去(官网)中下载jdk的安装文件

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

下载JDK 方式:2

我在百度云盘分下的链接:http://pan.baidu.com/s/1jIFZF9s 密码:u4n4

下载JDK 方式:3

使用wget下载,

$ wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz"

注意,如果使用:下载JDK 方式:3

那么以下步骤的,jdk1.8.0_144替换成jdk1.8.0_141

开始安装

上传在 /opt 目录

解压

$ cd /opt
$ tar zxvf jdk-8u144-linux-x64.tar.gz
$ mv jdk1.8.0_144/ /lib/jvm

配置环境变量

$ vi /etc/profile
#jdk
export JAVA_HOME=/lib/jvm
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH 

使环境变量生效

$ source /etc/profile

验证

root@souyunku:~# java -version
java version "1.8.0_141"
Java(TM) SE Runtime Environment (build 1.8.0_141-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode)

2.安装 Maven

$ apt-get install maven

验证Maven

root@souyunku:~# mvn -v
Apache Maven 3.3.9
Maven home: /usr/share/maven
Java version: 1.8.0_141, vendor: Oracle Corporation
Java home: /lib/jvm/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.10.0-35-generic", arch: "amd64", family: "unix"

3.安装 Git

$ apt-get install git

验证Maven

root@souyunku:~# git --version
git version 2.11.0

四、项目准备

1.编译项目

1.自己在服务器Maven编译项目

使用 git 克隆项目

$ git clone https://github.com/souyunku/other-projects.git

使用 maven 编译项目

$ cd other-projects/docker-spring-boot-demo/

2.修改项目

修改 Redis 服务器地址spring.redis.host=45.32.44.217,为本地IP, 在运行 Redis 镜像时候 已经把 Redis 做成外网服务了0.0.0.0:6379->6379/tcp

$ vi src/main/resources/application.properties
# Redis服务器地址
spring.redis.host=45.32.44.217
$ mvn package

复制target/ 目录下的docker-spring-boot-demo-0.0.1-SNAPSHOT.jar项目到/opt 目录稍后会用到

$ cp target/docker-spring-boot-demo-0.0.1-SNAPSHOT.jar /opt/

2.自己在本地Maven编译项目,然后上传到/opt 目录稍后会用到

修改application.propertiesRedis 服务器地址

other-projects/docker-spring-boot-demo/src/main/resources/application.properties

# Redis服务器地址
spring.redis.host=45.32.44.217

五、编写 Dockerfile

编写 Dockerfile 基于java:8镜像为基础

$ cd /opt/
$ touch Dockerfile
$ vi Dockerfile

编辑内容个如下

# 基于哪个镜像
FROM java:8# 将本地文件夹挂载到当前容器
VOLUME /tmp# 拷贝文件到容器,也可以直接写成ADD docker-spring-boot-demo-0.0.1-SNAPSHOT.jar /souyunku-app.jar
ADD docker-spring-boot-demo-0.0.1-SNAPSHOT.jar souyunku-app.jar
RUN bash -c 'touch /souyunku-app.jar'# 开放80端口
EXPOSE 80# 配置容器启动后执行的命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/souyunku-app.jar"]

六、发布项目

1.编译镜像

$ cd /opt/
$ docker build -t souyunku-app:v1 .

看到如下信息,就证明你的Dockerfile写的没毛病,而且镜像也编译成功了

Sending build context to Docker daemon  18.72MB
Step 1/6 : FROM java:8
8: Pulling from library/java
5040bd298390: Pull complete
fce5728aad85: Pull complete
76610ec20bf5: Pull complete
60170fec2151: Pull complete
e98f73de8f0d: Pull complete
11f7af24ed9c: Pull complete
49e2d6393f32: Pull complete
bb9cdec9c7f3: Pull complete
Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
Status: Downloaded newer image for java:8---> d23bdf5b1b1b
Step 2/6 : VOLUME /tmp---> Running in 0559a62b0cd5
Removing intermediate container 0559a62b0cd5---> b1f3846913a4
Step 3/6 : ADD docker-spring-boot-demo-0.0.1-SNAPSHOT.jar souyunku-app.jar---> 9f60dad5d2ac
Step 4/6 : RUN bash -c 'touch /souyunku-app.jar'---> Running in 39d5c09ab614
Removing intermediate container 39d5c09ab614---> 2b691adf7922
Step 5/6 : EXPOSE 80---> Running in 11a577437a23
Removing intermediate container 11a577437a23---> 78815d6fe6b2
Step 6/6 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/souyunku-app.jar"]---> Running in eca10fed3d02
Removing intermediate container eca10fed3d02---> 8ec4e85a0f05
Successfully built 8ec4e85a0f05
Successfully tagged souyunku-app:v1

2.查看镜像

root@souyunku:/opt# docker images souyunku-app
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
souyunku-app        v1                  8ec4e85a0f05        2 minutes ago       681MB

3.运行镜像

后台守护进程运行,然后把容器端口映射到,外网端口80

root@souyunku:/opt# docker run --name MySpringBoot -d -p 80:80 souyunku-app:v1
e68d438603619e363883d4eae65d3918e1c3e00f867731207bccf06f5690dc64

4.查看进程

查看容器进程,可以看到redis 在 6379端口,MySpringBoot 项目在 80端口

root@souyunku:/opt# docker container ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                    NAMES
e68d43860361        souyunku-app:v1     "java -Djava.securit…"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp       MySpringBoot
0f9646171edd        redis               "docker-entrypoint.s…"   39 minutes ago       Up 39 minutes       0.0.0.0:6379->6379/tcp   redis-6379

七、测试服务

浏览器访问:http://127.0.0.1/,当然我没有输入127.0.0.1 我是在服务器上直接做的,用的公网IP

Docker Compose

Docker ComposeDocker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用。

一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose,不再需要使用shell脚本来启动容器。在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器

Docker Compose 的搭建,实战用例正在整理中,会在下篇文章体现,关注公众号:”搜云库” 我会在微信公众号首发

Contact

  • 作者:鹏磊
  • 出处:http://www.ymq.io/2018/01/11/Docker-deploy-spring-boot-Integrate-redis
  • Email:admin@souyunku.com
  • 版权归作者所有,转载请注明出处
  • Wechat:关注公众号,搜云库,专注于开发技术的研究与知识分享

Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo相关推荐

  1. Docker 部署SpringBoot项目不香吗?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:流星007 链接:toutiao.com/i68433912 ...

  2. 使用Docker部署SpringBoot项目(避坑+超级详细版本)

    使用Docker部署SpringBoot项目(避坑+超级详细版本) 首先呢,非常感谢我们一起相遇在这个地方,想必此刻的你也是在一个学习求知的过程,我们一样,我们都是在求知的路上匍匐前进!看到这篇文章, ...

  3. 又到了上云时刻啦!!!阿里云 Docker部署SpringBoot项目 方便测试的部署方式

    又到了上云时刻啦!!!阿里云 Docker部署SpringBoot项目 方便测试的部署方式 部署思路: 具体步骤: 1.打成jar 2.上传到服务器 3.启动JDK容器 4.进入JDK 容器 启动 项 ...

  4. 使用IDEA集成docker部署springboot项目及bug解决并连同redis、MySQL

    流程介绍 安装docker(windows) 配置docker源加速 docker安装redis IDEA集成docker # IDEA连接docker 配置springboot项目 打包成docke ...

  5. docker 挂载目录_完美解决:Docker部署SpringBoot项目后图片无法访问和上传,3招搞定!...

    以前使用FTP在Linux中使用java -jar xxx.jar部署SpringBoot项目时,由于在项目中指定了主机文件存放路径映射,可以直接访问服务器的文件. 但是最近入坑Docker,将Spr ...

  6. 史上最全阿里云服务器上Docker部署Springboot项目 实战 每一步都带详细图解!!!

    在学习编程的时候,我们都会想,该怎么把自己写出来的项目和创意分享给大家勒.直接给代码吗?平常人看不懂,环境还需要一大堆. 那么部署到服务器上,让人能够直接访问,我想这应该是最棒的方式了吧. 使用Doc ...

  7. 就几条命令,一键学会Docker部署SpringBoot项目

    今天,我们使用docker的安装方式,来安装一下我们的项目,实验环境是centos 7系统上,本实验适用部署大部分Springboot项目.文末有40分钟的视频教学哈! eblog项目地址: http ...

  8. Jenkins+Pipeline+Docker部署SpringBoot项目到远程服务器

    Jenkins部署 前言 Jenkins 安装 nginx配置 jenkins配置 Docker安装 项目部署 项目添加Dockerfile文件 Jenkins新建任务 使用Pipeline部署 结果 ...

  9. 2分钟学会Docker部署SpringBoot项目

    文章目录 一.安装docker 1. 在线安装docker 2. 换镜像源 二.安装redis 三.安装mysql 四.安装RabbitMq 五.安装ElasticSearch 5.1. 修改服务器配 ...

最新文章

  1. tomcat 部署站点时遇到的部分问题以及解决方案
  2. 单元测试以及dagger的使用
  3. tomcat 和apache的整合的方法及配置(一)
  4. Web框架之Django_03 路由层了解(路有层 无名分组、有名分组、反向解析、路由分发 视图层 JsonResponse,FBV、CBV、文件上传)
  5. 什么是云计算?云计算学习基础
  6. Dnslog在SQL注入中的利用
  7. linux历史性能数据,Linux平台下如何看OS历史的性能数据
  8. 山东大学软件学院计算机组成原理课程设计实验四
  9. 2018服务器cpu性能天梯图,哪里看CPU性能排行榜?2018年CPU天梯图最新版(高清)...
  10. 理解 LSTM 网络
  11. cpp(c++)基础
  12. ffmpeg实现flv至mp4格式转换的bat脚本
  13. 元音I、i 、ε、æ、a小总结
  14. 淘宝 触屏主页面 菜单
  15. 百度回应“柬埔寨吧”为境外赌场招工:情况属实 已报案
  16. 阿里P9又有新瓜,而我却是技术圈的一股清流
  17. 关于微信录音的坑 amr格式音频文件HTML无法播放
  18. 华为自研设备明年都将升级鸿蒙系统,华为杨海松:明年所有华为自研设备升级鸿蒙系统,将发布鸿蒙系统智能手机...
  19. 177本名著浓缩成了177句话!经典收藏!太有道理了!
  20. html 设置地图中心点,SOSO地图JS画出标注和中心点以html形式运行

热门文章

  1. 完爆Facebook/GraphQL,APIJSON全方位对比解析(一)-基础功能
  2. IPVS: Can't initialize ipvs: Protocol not available解决方法
  3. cocos2dx 优化略记
  4. JavaIO操作(1)字节流和字符流-1
  5. Yii学习笔记【3】
  6. 区块链将带来怎样的应用?
  7. Python中的Lambda表达式
  8. spring vertx_如何在Spring设置Vertx
  9. java50车架适合身高,【经验分享】身高与车架的选择
  10. 漫谈回溯(未完待续)