文档章节

docker 部署springboot、dubbo项目

trntaken
 trntaken
发布于 2017/09/03 16:51
字数 1014
阅读 61
收藏 2
点赞 0
评论 0

创建项目

1.创建一个springboot项目 pas。随便写一个Controller

	@RequestMapping(value = "/oauth")
	public void authentication(HttpServletRequest request,
			HttpServletResponse response) {

     。。。。。
 }

2.打包部署pas。部署到linux 。目录结构如下:

[root@iZotm71x017bylZ pas]# ll
total 80
drwxr-xr-x 2 root root  4096 Sep  3 16:41 config
drwxr-xr-x 2 root root  4096 Sep  2 18:59 lib
-rw-r--r-- 1 root root 67926 Aug 28 10:59 pas-1.0.0.jar

3.运行项目,看到pas 项目已经正常启动。

java -jar pas-1.0.0.jar  &
[1] 10390
[root@scss-tcsdev-tomcat1 pas]# 2017-09-03 17:15:22.066 [main] INFO  com.wtsd.pas.PasApplication - Starting PasApplication v1.0.0 on localhost with PID 10390 (/scss/pas/pas-1.0.0.jar started by root in /scss/pas)

 

4.对上述pas 整个项目进行打成tar.gz压缩包,为创建pas 镜像做准备。config目录下application.properties 和 logback.xml不需要打包进去。在下面文中,我们会把配置文件放在卷目录config下。

 [root@scss-tcsdev-tomcat1 pas]# tar -zcvf pas.tar.gz pas/

创建镜像

1.首先创建并进入/opt/pas 文件夹。创建Dockerfile 文件:

# This is  my first web project with Docker.
FROM openjdk:8-jdk-alpine
#将项目包复制到镜像/usr/local目录下
ADD pas.tar.gz /usr/local/
ENV JAVA_OPTS=""
#暴露84端口
EXPOSE 84
#切换工作目录
WORKDIR  /usr/local/pas/
ENTRYPOINT ["sh","-c","java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar  pas-1.0.0.jar"]

2. 将pas.tar.gz 放入该目录下,创建券目录 logs 和config ,最终结构如下:

[root@iZotm71x017bylZ pas]# ll
total 24244
-rw-r--r-- 1 root root      273 Sep  3 17:43 Dockerfile
drwxr-xr-x 2 root root     4096 Sep  3 15:57 config
drwxr-xr-x 2 root root     4096 Sep  3 18:09 logs
-rw-r--r-- 1 root root 24784743 Sep  3 16:41 pas.tar.gz

 注意: config 和logs两个目录会挂载到容器config和logs目录下。容器运行从config目录加载application.properties 和 logback.xml 配置,同时容器会将日志文件会输出到该logs目录下。

3. docker build -t chenyaochn/pas .  如下显示:

[root@iZotm71x017bylZ pas]# docker build -t chenyaochn/pas .
Sending build context to Docker daemon  52.75MB
Step 1/7 : FROM openjdk:8-jdk-alpine
 ---> 478bf389b75b
Step 2/7 : ADD pas.tar.gz /usr/local/
 ---> fc280ddd785a
Removing intermediate container 2075aabffedc
Step 3/7 : ENV JAVA_OPTS ""
 ---> Running in 681af64dfa9b
 ---> bad8ae41f58c
Removing intermediate container 681af64dfa9b
Step 4/7 : VOLUME /opt/pas/logs
 ---> Running in bcdd0fac9a14
 ---> a424c0f6c7c2
Removing intermediate container bcdd0fac9a14
Step 5/7 : EXPOSE 84
 ---> Running in dc7f6eff63c1
 ---> f21fd6919fd5
Removing intermediate container dc7f6eff63c1
Step 6/7 : WORKDIR /usr/local/pas/
 ---> 121ac70d7e82
Removing intermediate container 84f20985d008
Step 7/7 : ENTRYPOINT sh -c java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar  pas-1.0.0.jar
 ---> Running in 6212828c9d53
 ---> 3efcebec6a4d
Removing intermediate container 6212828c9d53
Successfully built 3efcebec6a4d
Successfully tagged chenyaochn/pas:latest

4.docker images查看镜像 ,已经创建成功:

[root@iZotm71x017bylZ pas]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
chenyaochn/pas      latest              3efcebec6a4d        45 minutes ago      129MB

 

部署

部署zookeeper

1.从docker hub上下载最新zookeeper镜像。

[root@iZotm71x017bylZ ~]# docker pull zookeeper 
Using default tag: latest

2.运行

[root@iZotm71x017bylZ ~]# docker run  -d -p 2181:2181 --name zookeeper zookeeper 
2defe46356fe8f28126350360f75c06cced32eb5154a391027e574b88bf3245a

可以将,zookeeper conf/目录挂载到宿主服务器,容器和宿主服务器共享zoo.cfg配置文件,方便对zookeeper配置的修改。

3. 查看 运行结果:

[root@iZotm71x017bylZ ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                                        NAMES
2defe46356fe        zookeeper           "/docker-entrypoin..."   About a minute ago   Up About a minute   2888/tcp, 0.0.0.0:2181->2181/tcp, 3888/tcp   zookeeper

 

部署springboot项目

1.docker run -p 84:84 -v /opt/pas/config/:/usr/local/pas/config  -v  /opt/pas/logs/:/usr/local/pas/logs/ --name pas chenyaochn/pas  运行镜像:

#发布84端口, 创建两个卷,一个是配置文件目录,一个是日志文件目录
[root@iZotm71x017bylZ pas]# docker run -p 84:84 -v /opt/pas/config/:/usr/local/pas/config  -v  /opt/pas/logs/:/usr/local/pas/logs/ --name pas chenyaochn/pas

Starting PasApplication v1.0.0 on 35e4c217b9d4 with PID 5 (/usr/local/pas/pas-1.0.0.jar started by root in /usr/local/pas)

2. docker ps 可看到容器已经启动:

[root@iZotm71x017bylZ ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                        NAMES
35e4c217b9d4        chenyaochn/pas      "sh -c 'java $JAVA..."   15 hours ago        Up 15 hours         0.0.0.0:84->84/tcp                           pas

3. tail -f logs/pas.log 查看 日志,可看到日志文件已经在宿主服务器上生成:

[root@iZotm71x017bylZ pas]# tail -f logs/pas.log 
2017-09-03 10:09:35.271 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2017-09-03 10:09:35.318 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping - Mapped URL path [/webjars/**] onto ha

4.  curl  -I   http://localhost:84/pas/oauth  。成功访问pas项目 

[root@iZotm71x017bylZ pas]# curl  -I   http://localhost:84/pas/oauth
HTTP/1.1 200 
Content-Length: 0
Date: Sun, 03 Sep 2017 10:37:38 GMT

 

push 镜像到仓库

 1. docker push chenyaochn/pas

[root@iZotm71x017bylZ ~]# docker push chenyaochn/pas
The push refers to a repository [docker.io/chenyaochn/pas]
6cfcac5463b4: Pushed 
e378420761b2: Layer already exists 
b0f743408169: Layer already exists 
5bef08742407: Layer already exists 
latest: digest: sha256:1e3f1f1620cda285f62b10fec1f582a6b31d768dc7e98322cb96bb976a958333 size: 1159

2.查看

© 著作权归作者所有

共有 人打赏支持
trntaken
粉丝 3
博文 25
码字总数 33950
作品 0
深圳
程序员
学习 Spring Boot 知识看这一篇就够了

从2016年因为工作原因开始研究 Spring Boot ,先后写了很多关于 Spring Boot 的文章,发表在技术社区、我的博客和我的公号内。粗略的统计了一下总共的文章加起来大概有六十多篇了,其中一部分...

ityouknow
05/28
0
0
使用 Docker 部署 Spring Boot之项目的构建

Docker通常用于如下场景: web应用的自动化打包和发布; 自动化测试和持续集成、发布; 在服务型环境中部署和调整数据库或其他的后台应用; 从头编译或者扩展现有的OpenShift或Cloud Foundry...

qq_28089993
04/21
0
0
腾讯云安装Docker,并部署Springboot

  最近想在微信公众号中做个小程序出来,供大家日常生活中使用。本来打算直接调阿里api市场中提供的接口的,可是发现其中的接口都是http的,而微信小程序中要求接口必须是https的,因此只能...

u013088062
04/25
0
0
Docker下ELK三部曲之二:细说开发

本章是《Docker下ELK三部曲》的第二篇,之前的《Docker下ELK三部曲之一:极速体验》部署了ELK,还有一个web应用可以将日志上报到ELK,然后在Kibana提供的页面查询到了日志,今天我们一起深入...

boling_cavalry
04/21
0
0
最新官方版的SpringBoot 整合 Dubbo

上次的那个springboot和dubbo的整合版本中,dubbo的版本是2.5.3,它的Service注解和事务不能同时使用,会造成扫描失效,2.6.2的dubbo版本已经纠正了此不便,官方也给出了与springboot整合的q...

FantJ
06/09
0
0
Docker部署SpringBoot项目简单实例

此类文章网上很多,但是自己按着做也会出各种各样的错误。记录我踩的坑 目标是在centos7中部署springboot项目,在外部能访问。 先上springboot代码简单的一批 @SpringBootApplication@RestC...

cgj296645438
04/19
0
0
恒宇少年/spring-boot-chapter

简书整套文档以及源码解析 专题 专题名称 专题描述 001 Spring Boot 核心技术 讲解SpringBoot一些企业级层面的核心组件 002 Spring Cloud 核心技术 对Spring Cloud核心技术全面讲解 003 Quer...

恒宇少年
04/19
0
0
springboot 开发入门,及问题汇总

1 . springboot简单介绍(http://projects.spring.io/spring-boot/) 现在的web项目几乎都会用到spring框架,而要使用spring难免需要配置大量的xml配置文件,而springboot的出现解 决了这一问...

崔江昆
2015/03/18
0
30
SpringBoot | 第一章:第一个SpringBoot应用

SpringBoot | 第一章:第一个SpringBoot应用 springboot简单介绍 概述 随着动态语言的流行(Ruby、Groovy、Scala、Node.js),Java的开发显得格外的笨重:繁多的配置、低下的开发效率、复杂的...

oKong
07/15
0
0
SpringBoot之打包成war包部署到tomcat

SpringBoot打包成war包部署到tomcat 小编花费了九牛二虎之力,总算把SpringBoot项目成功打包成war包,其中不免遇到了一些小状况,特写此文,以便其他小伙伴们不要走我的老路,避免重复这些小...

被钓的小鱼
07/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

pbgo: 基于Protobuf的迷你RPC/REST框架

https://www.oschina.net/p/pbgo

chai2010
25分钟前
0
0
rsync工具介绍、常用选项以及通过ssh同步

linux下的文件同步工具 rsync rsync是非常实用的一个同步工具,可以从a机器到b机器传输一个文件,也可以备份数据,系统默认没有这个工具,要使用命令 yum install -y rsync 安装。 rsync的命...

黄昏残影
41分钟前
0
0
OSChina 周四乱弹 —— 表妹要嫁人 舅妈叮嘱……

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @哈哈哈哈哈嗝:一定要听——The Pancakes的单曲《咁咁咁》 《咁咁咁》- The Pancakes 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :...

小小编辑
今天
145
4
流利阅读笔记30-20180719待学习

重磅:让人类得老年痴呆的竟是它? Lala 2018-07-19 1.今日导读 去年奥斯卡最佳动画长片《寻梦环游记》里有一句经典台词:“比死亡更可怕的,是遗忘”。在电影中,年迈的曾祖母会重复说一样的...

aibinxiao
今天
3
0
1.16 Linux机器相互登录

Linux机器之间以密码方式互相登录 运行命令#ssh [ip address],标准命令:#ssh [username]@ip, 如果没有写用户名,则默认为系统当前登录的用户 命令#w查看系统负载,可查看到连接到该主机的...

小丑鱼00
今天
0
0
about git flow

  昨天元芳做了git分支管理规范的分享,为了拓展大家关于git分支的认知,这里我特意再分享这两个关于git flow的链接,大家可以看一下。 Git 工作流程 Git分支管理策略   git flow本质上是...

qwfys
今天
2
0
Linux系统日志文件

/var/log/messages linux系统总日志 /etc/logrotate.conf 日志切割配置文件 参考https://my.oschina.net/u/2000675/blog/908189 dmesg命令 dmesg’命令显示linux内核的环形缓冲区信息,我们可...

chencheng-linux
今天
1
0
MacOS下给树莓派安装Raspbian系统

下载镜像 前往 树莓派官网 下载镜像。 点击 最新版Raspbian 下载最新版镜像。 下载后请,通过 访达 双击解压,或通过 unzip 命令解压。 检查下载的文件 ls -lh -rw-r--r-- 1 dingdayu s...

dingdayu
今天
1
0
spring boot使用通用mapper(tk.mapper) ,id自增和回显等问题

最近项目使用到tk.mapper设置id自增,数据库是mysql。在使用通用mapper主键生成过程中有一些问题,在总结一下。 1、UUID生成方式-字符串主键 在主键上增加注解 @Id @GeneratedValue...

北岩
今天
2
0
告警系统邮件引擎、运行告警系统

告警系统邮件引擎 cd mail vim mail.py #!/usr/bin/env python#-*- coding: UTF-8 -*-import os,sysreload(sys)sys.setdefaultencoding('utf8')import getoptimport smtplibfr......

Zhouliang6
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部