IDE:idea

工具:docker

spring boot:2.0.1

========================================

简单记录一下流程,以供参考:

第一步:首先得有一个spring boot的项目【集成了jpa+mybatis的spring boot 例子:https://github.com/AngelSXD/swapping

第二步:项目打包为jar包

install成功以后

找到项目根目录下的target目录,这里面的jar就是打包好可以部署的jar包

第三步:准备服务器和其他的环境,例如mysql数据库,docker

  进入服务器,【centOS7上安装docker步骤:https://www.cnblogs.com/sxdcgaq8080/p/9178918.html

  如果你想在服务器上安装mysql,步骤如下:【https://www.cnblogs.com/sxdcgaq8080/p/9199406.html

  【当然,你打包的jar包中,配置文件中连接的数据库的地址需要是你mysql的实际地址,否则数据库连接不上】

第四步:准备服务器上的jar包存放目录以及Dockerfile文件

  进入服务器,创建你jar包上传到服务器要放的目录,例如:【在linux上创建目录的命令自己查!!】

  我要将jar包即将放在这个目录下:

  并且在本目录下创建Dockerfile文件,并且将下面这段粘贴在Dockerfile文件中【使用vi命令即可完成文件的创建以及文件内容的填充】


FROM java:8
VOLUME /temp
ADD swapping.jar swapping.jar
RUN bash -c 'touch /swapping.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","-Xmx1024m","-Xms1024m","/swapping.jar"]

 

对于文件内容的解释:【Dockerfile命令解释:http://www.docker.org.cn/dockerppt/114.html

FROM java:8

指定要构建的spring boot服务镜像的基础源镜像是java,版本是8;如果本地没有java:8的镜像,就会从dockerHub下载。一般首次下载,以后就不会下载了。
VOLUME /temp

VOLUME 指向了容器内的/tmp的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录

VOLUME 命令只能指定挂载点,也就是说在此处,只能指定容器内的目录,不能指定宿主机上对应的目录,也就是说是宿主机上自动生成的目录 去挂载了  容器内的指定的/tmp目录!!!
如果想要指定宿主机的目录去进行挂载,只能通过run命令中的 -v参数进行 宿主机的指定目录 挂载 容器内的指定目录
ADD swapping.jar swapping.jar

其实就是 ADD 【rz上传上来的文件】 【要被拷贝到即将要构建的docker容器中的文件】
RUN bash -c 'touch /swapping.jar'

实际执行复制操作的命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","-Xmx1024m","-Xms1024m","/swapping.jar"]

ENTRYPOINT 配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。

-Djava.security.egd=file:/dev/./urandom
添加java.security.egd的系统属性指向/dev/urandom,JVM上的随机数与熵池策略
参考地址:【https://blog.csdn.net/lanmo555/article/details/51909021】

第五步:上传jar包

先修改jar包名字:修改为swapping.jar【文件名需要与Dockerfile文件中配置的一致】

  使用命令

rz

即可完成jar包上传

注意,

#Dockerfile和jar包放在同一个目录下

第六步:需要进入jar包所在目录,使用jar包创建镜像

  命令如下:【注意有点哦】

docker build -t swapping .

第七步:运行镜像,启动docker容器

  最简单的运行命令

docker run --name swapping -itd --net=host  swapping 

  需要注意spring boot项目的时区问题的启动命令【关于时区处理问题,需要参考:https://www.cnblogs.com/sxdcgaq8080/p/10057385.html

  需要注意spring boot项目启动开发配置文件和生产配置文件的配置文件的启动应用【https://www.cnblogs.com/sxdcgaq8080/p/10481974.html

docker run --name swapping -itd --net=host -v /etc/localtime:/etc/localtime:ro  -v /etc/timezone:/etc/timezone:ro  swapping

  启动成功后:查看容器启动情况

docker logs -f swapping

退出日志查看 使用

Ctrl+Z

查看启动运行日志如下:

root@wj:/soft/java/dockerJar/swapping# docker logs -f swapping

  .   ____          _            __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.0.1.RELEASE) 2018-12-03 10:25:38.055 INFO 1 --- [ main] com.sxd.swapping.SwappingApplication : Starting SwappingApplication v0.0.1-SNAPSHOT on wj.luna.base with PID 1 (/swapping.jar started by root in /)
2018-12-03 10:25:38.060 INFO 1 --- [ main] com.sxd.swapping.SwappingApplication : No active profile set, falling back to default profiles: default
2018-12-03 10:25:38.257 INFO 1 --- [ main] ConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@1ef7fe8e: startup date [Mon Dec 03 10:25:38 CST 2018]; root of context hierarchy
2018-12-03 10:25:41.232 INFO 1 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2018-12-03 10:25:41.429 INFO 1 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2018-12-03 10:25:41.452 INFO 1 --- [ main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.sxd.swapping.dao.jpa.GoodsStockDao.
2018-12-03 10:25:41.455 INFO 1 --- [ main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.sxd.swapping.dao.jpa.HuaYangAreaDao.
2018-12-03 10:25:42.341 INFO 1 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$3b883049] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2018-12-03 10:25:43.196 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 9666 (http)
2018-12-03 10:25:43.243 INFO 1 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2018-12-03 10:25:43.243 INFO 1 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.29
2018-12-03 10:25:43.270 INFO 1 --- [ost-startStop-1] o.a.catalina.core.AprLifecycleListener : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/usr/java/packages/lib/amd64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib]
2018-12-03 10:25:43.528 INFO 1 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2018-12-03 10:25:43.529 INFO 1 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 5277 ms
2018-12-03 10:25:44.010 INFO 1 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Servlet statViewServlet mapped to [/druid/*]
2018-12-03 10:25:44.013 INFO 1 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Servlet dispatcherServlet mapped to [/]
2018-12-03 10:25:44.020 INFO 1 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*]
2018-12-03 10:25:44.020 INFO 1 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2018-12-03 10:25:44.021 INFO 1 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2018-12-03 10:25:44.021 INFO 1 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*]
2018-12-03 10:25:44.021 INFO 1 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'webStatFilter' to urls: [/*]
2018-12-03 10:25:44.616 INFO 1 --- [ main] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'default'
2018-12-03 10:25:44.664 INFO 1 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [
name: default
...]
2018-12-03 10:25:44.874 INFO 1 --- [ main] org.hibernate.Version : HHH000412: Hibernate Core {5.2.16.Final}
2018-12-03 10:25:44.878 INFO 1 --- [ main] org.hibernate.cfg.Environment : HHH000206: hibernate.properties not found
2018-12-03 10:25:44.982 INFO 1 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
DEBUG - {conn-10001} connected
DEBUG - {conn-10002} connected
DEBUG - {conn-10003} connected
DEBUG - {conn-10004} connected
DEBUG - {conn-10005} connected
2018-12-03 10:25:45.859 INFO 1 --- [ main] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited
DEBUG - {conn-10005} pool-connect
2018-12-03 10:25:45.890 INFO 1 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.MySQL55Dialect
DEBUG - {conn-10005} pool-recycle
DEBUG - {conn-10005} pool-connect
DEBUG - {conn-10005} pool-recycle
2018-12-03 10:25:46.948 INFO 1 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2018-12-03 10:25:47.626 INFO 1 --- [ main] o.h.h.i.QueryTranslatorFactoryInitiator : HHH000397: Using ASTQueryTranslatorFactory
2018-12-03 10:25:50.730 WARN 1 --- [ main] aWebConfiguration$JpaWebMvcConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2018-12-03 10:25:50.872 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/huayang/pages],methods=[GET]}" onto public com.sxd.swapping.base.PageResponse<com.sxd.swapping.domain.HuaYangArea> com.sxd.swapping.controller.HuaYangApiWithJPA.pages(com.sxd.swapping.domain.HuaYangArea)
2018-12-03 10:25:50.874 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/huayang],methods=[POST]}" onto public com.sxd.swapping.base.UniVerResponse<com.sxd.swapping.domain.HuaYangArea> com.sxd.swapping.controller.HuaYangApiWithJPA.huayang(com.sxd.swapping.domain.HuaYangArea)
2018-12-03 10:25:50.874 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/huayang/huayangs],methods=[GET]}" onto public com.sxd.swapping.base.UniVerResponse<java.util.List<com.sxd.swapping.domain.HuaYangArea>> com.sxd.swapping.controller.HuaYangApiWithJPA.huayangs(java.lang.String)
2018-12-03 10:25:50.875 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/huayang/updates],methods=[POST]}" onto public com.sxd.swapping.base.UniVerResponse<java.util.List<com.sxd.swapping.domain.HuaYangArea>> com.sxd.swapping.controller.HuaYangApiWithJPA.updates(com.sxd.swapping.base.BatchBean)
2018-12-03 10:25:50.875 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/huayang/update],methods=[PUT]}" onto public com.sxd.swapping.base.UniVerResponse<com.sxd.swapping.domain.HuaYangArea> com.sxd.swapping.controller.HuaYangApiWithJPA.update(com.sxd.swapping.domain.HuaYangArea)
2018-12-03 10:25:50.895 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/huayangMybatis/oneHuaYang],methods=[GET]}" onto public com.sxd.swapping.base.UniVerResponse<com.sxd.swapping.domain.HuaYangArea> com.sxd.swapping.controller.HuaYangApiWithMyBatis.findOne(java.lang.String)
2018-12-03 10:25:50.900 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/huayangMybatis/findMap],methods=[GET]}" onto public com.sxd.swapping.base.UniVerResponse<java.util.Map<java.lang.String, java.lang.String>> com.sxd.swapping.controller.HuaYangApiWithMyBatis.findMap(com.sxd.swapping.domain.HuaYangArea)
2018-12-03 10:25:50.900 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/huayangMybatis/findBy3],methods=[GET]}" onto public com.sxd.swapping.base.UniVerResponse<java.util.List<com.sxd.swapping.base.HuaYangModelBean>> com.sxd.swapping.controller.HuaYangApiWithMyBatis.findByNameAndPersonAndCreateDate(com.sxd.swapping.domain.HuaYangArea)
2018-12-03 10:25:50.901 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/huayangMybatis/findBy3Page],methods=[GET]}" onto public com.sxd.swapping.base.PageResponse<com.sxd.swapping.base.HuaYangModelBean> com.sxd.swapping.controller.HuaYangApiWithMyBatis.findByNameAndPersonAndCreateDatePage(com.sxd.swapping.domain.HuaYangArea)
2018-12-03 10:25:50.902 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/huayangMybatis/findByNameLike],methods=[GET]}" onto public com.sxd.swapping.base.UniVerResponse<java.util.List<com.sxd.swapping.domain.HuaYangArea>> com.sxd.swapping.controller.HuaYangApiWithMyBatis.findAll1(java.lang.String)
2018-12-03 10:25:50.904 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/huayangMybatis/findByNameLike2],methods=[GET]}" onto public com.sxd.swapping.base.UniVerResponse<java.util.List<com.sxd.swapping.domain.HuaYangArea>> com.sxd.swapping.controller.HuaYangApiWithMyBatis.findAll2(java.lang.String)
2018-12-03 10:25:50.912 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/huayangMybatis/oneHuaYang],methods=[DELETE]}" onto public com.sxd.swapping.base.UniVerResponse<java.lang.String> com.sxd.swapping.controller.HuaYangApiWithMyBatis.deleteOne(java.lang.Long)
2018-12-03 10:25:50.913 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/huayangMybatis/update],methods=[PUT]}" onto public com.sxd.swapping.base.UniVerResponse<com.sxd.swapping.domain.HuaYangArea> com.sxd.swapping.controller.HuaYangApiWithMyBatis.update(com.sxd.swapping.domain.HuaYangArea)
2018-12-03 10:25:50.913 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/huayangMybatis/insert],methods=[POST]}" onto public com.sxd.swapping.base.UniVerResponse<com.sxd.swapping.domain.HuaYangArea> com.sxd.swapping.controller.HuaYangApiWithMyBatis.insert(com.sxd.swapping.domain.HuaYangArea)
2018-12-03 10:25:50.914 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/goods/stock/concurrentStock],methods=[POST]}" onto public com.sxd.swapping.base.UniVerResponse<java.util.Map<java.lang.Integer, java.lang.String>> com.sxd.swapping.controller.GoodsStockController.concurrentStock(com.sxd.swapping.domain.GoodsStock)
2018-12-03 10:25:50.917 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/goods/stock/insert],methods=[POST]}" onto public com.sxd.swapping.base.UniVerResponse<com.sxd.swapping.domain.GoodsStock> com.sxd.swapping.controller.GoodsStockController.insert(com.sxd.swapping.domain.GoodsStock)
2018-12-03 10:25:50.919 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/createCode/getCode]}" onto public com.sxd.swapping.base.UniVerResponse<java.lang.String> com.sxd.swapping.controller.CreateCodeController.createCode()
2018-12-03 10:25:50.927 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/swagger-resources/configuration/ui]}" onto public org.springframework.http.ResponseEntity<springfox.documentation.swagger.web.UiConfiguration> springfox.documentation.swagger.web.ApiResourceController.uiConfiguration()
2018-12-03 10:25:50.934 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/swagger-resources/configuration/security]}" onto public org.springframework.http.ResponseEntity<springfox.documentation.swagger.web.SecurityConfiguration> springfox.documentation.swagger.web.ApiResourceController.securityConfiguration()
2018-12-03 10:25:50.935 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/swagger-resources]}" onto public org.springframework.http.ResponseEntity<java.util.List<springfox.documentation.swagger.web.SwaggerResource>> springfox.documentation.swagger.web.ApiResourceController.swaggerResources()
2018-12-03 10:25:50.941 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2018-12-03 10:25:50.942 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2018-12-03 10:25:51.332 INFO 1 --- [ main] pertySourcedRequestMappingHandlerMapping : Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
2018-12-03 10:25:51.590 INFO 1 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-12-03 10:25:52.093 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@1ef7fe8e: startup date [Mon Dec 03 10:25:38 CST 2018]; root of context hierarchy
2018-12-03 10:25:52.297 INFO 1 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-12-03 10:25:52.298 INFO 1 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-12-03 10:25:52.321 INFO 1 --- [ main] .m.m.a.ExceptionHandlerExceptionResolver : Detected @ExceptionHandler methods in myControllerAdvice
2018-12-03 10:25:53.431 INFO 1 --- [ main] o.s.ui.freemarker.SpringTemplateLoader : SpringTemplateLoader for FreeMarker: using resource loader [org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@1ef7fe8e: startup date [Mon Dec 03 10:25:38 CST 2018]; root of context hierarchy] and template loader path [classpath:/templates/]
2018-12-03 10:25:53.432 INFO 1 --- [ main] o.s.w.s.v.f.FreeMarkerConfigurer : ClassTemplateLoader for Spring macros added to FreeMarker configuration
2018-12-03 10:25:53.485 WARN 1 --- [ main] o.s.b.a.f.FreeMarkerAutoConfiguration : Cannot find template location(s): [classpath:/templates/] (please add some templates, check your FreeMarker configuration, or set spring.freemarker.checkTemplateLocation=false)
2018-12-03 10:25:53.998 INFO 1 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2018-12-03 10:25:54.001 INFO 1 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Bean with name 'dataSource' has been autodetected for JMX exposure
2018-12-03 10:25:54.018 INFO 1 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Located MBean 'dataSource': registering with JMX server as MBean [com.alibaba.druid.pool:name=dataSource,type=DruidDataSource]
2018-12-03 10:25:54.031 INFO 1 --- [ main] o.s.c.support.DefaultLifecycleProcessor : Starting beans in phase 2147483647
2018-12-03 10:25:54.031 INFO 1 --- [ main] d.s.w.p.DocumentationPluginsBootstrapper : Context refreshed
2018-12-03 10:25:54.070 INFO 1 --- [ main] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s)
2018-12-03 10:25:54.164 INFO 1 --- [ main] s.d.s.w.s.ApiListingReferenceScanner : Scanning for api listing references
2018-12-03 10:25:54.802 INFO 1 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: insertUsingPOST_1
2018-12-03 10:25:54.806 INFO 1 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: updateUsingPUT_1
2018-12-03 10:25:54.944 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 9666 (http) with context path ''
2018-12-03 10:25:54.969 INFO 1 --- [ main] com.sxd.swapping.SwappingApplication : Started SwappingApplication in 17.782 seconds (JVM running for 18.811)

可以看到启动成功了。

第八步:访问服务看是否正常

接口返回正常

数据库存储正常

好了,服务部署完成拉!!!!!

OK,如果想要重新启动spring boot服务,可以使用命令

docker restart swapping

ok现在,如果代码更新了,想要停止服务,移除springboot服务,重新部署

分别执行如下步骤即可

停止服务

docker stop swapping

移除容器

docker rm -f swapping

移除jar包

rm -f swapping.jar

重新打包【在idea操作,注意配置文件中的连接地址等配置】

【并且注意Dockerfile文件中指定的jar包文件名,需要与上传的jar包文件名一致】

上传jar包

rz

然后重新制作镜像

docker build -t swapping .

启动服务

docker run --name swapping -itd --net=host -v /etc/localtime:/etc/localtime:ro  -v /etc/timezone:/etc/timezone:ro  swapping

即可完成重新部署!!!

当然,你之前构建的镜像文件依旧存在,虽然它不影响你项目的使用,但是你的镜像存在会占据你服务器的空间

所以可以使用命令,查看目前有哪些镜像

docker images

可以使用命令,删除不用的镜像文件

docker rmi 9d3ee8a877d3

【docker】docker部署spring boot项目在服务器上的更多相关文章

  1. docker部署spring boot项目在服务器上

    IDE:idea 工具:docker spring boot:2.0.1 ======================================== 简单记录一下流程,以供参考: 第一步:首先得 ...

  2. 在Docker中部署Spring Boot项目

    想要获取更多文章可以访问我的博客 - 代码无止境. 微服务现在在互联网公司可谓非常流行了,之前找工作的的时候很多HR电话约面试的时候都会问对微服务是否有过接触.而微服务和Docker可以非常完美的结合 ...

  3. IDEA连接远程服务器Docker部署Spring Boot项目

    开始前的准备工作 拥有一台云服务器,我的是腾讯云服务器(CentOS7) 腾讯云服务器安装Docker,我的版本是Docker 19.03.9,关于安装和配置镜像加速器可以查阅我的另一篇博文:http ...

  4. Windows Docker 部署 Spring Boot 项目

    目录 Docker Configuration Config IDEA Plugin Create Spring Boot Project Containerize It Use Dockerfile ...

  5. 使用 Docker 部署 Spring Boot 项目

    Docker 介绍 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口.它是目前最流行的 Linux 容器解决方案. Docker 将应用程序与该程序的依赖,打包在一个文件里面 ...

  6. 使用Docker部署Spring boot项目

    Docker是一个使用广泛的Linux容器管理工具包,它允许用户创建镜像,并将其容器实例化.通过本指南,我们可以学习到如何使用Docker部署Spring Boot项目. 先决条件 开发之前,你必须具 ...

  7. Docker Gitlab CI 部署 Spring Boot 项目

    目前在学习这一块的内容,但是可能每个人环境都不同,导致找不到一篇博客能够完全操作下来没有错误的,所以自己也写一下,记录一下整个搭建的过程. Docker 的安装这里就不赘述了,基本上几行命令都可以了, ...

  8. 使用 Docker 部署 Spring Boot 项目,带劲!!

    上一篇:年轻人的第一个 Docker 应用 Docker 一次构建.处处运行及快速启停的特性,在微服务架构中有着举足轻重的地位,具体的概念性的东西就不介绍了,不懂的点击这里阅读 Docker 基础教程 ...

  9. 从零部署Spring boot项目到云服务器(正式部署)

    上一篇文章总结了在Linux云服务器上部署Spring Boot项目的准备过程,包括环境的安装配置,项目的打包上传等. 链接在这里:http://www.cnblogs.com/Lovebugs/p/ ...

随机推荐

  1. 一步一步学习IdentityServer3 (5)

    这篇文章介绍下数据持久化问题,官方例子可能都是缓存数据 Client  User Scope 下面介绍下怎么使用数据库持久化 这里需要导入nuget包 :IdentityServer3.EntityF ...

  2. easyui tree tabs

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. 【LOJ】#6391. 「THUPC2018」淘米神的树 / Tommy

    题解 一道非常神仙的计数题 如果只有一个点,就是非常简单的树型dp \(f_{u} = (siz_{u} - 1)! \prod_{v \in son_{u}} \frac{f_{v}}{siz_{v ...

  4. 成功实施的APS项目故事分享---我们数据治理的心路历程

    一.故事背景 A企业是易普优APS重要客户之一,是某行业的龙头企业:APS项目历时7个月顺利上线,十个月验收!通过易普优APS的顺利实施,建成了集团的精益计划管控运营平台,树立计划的权威与指挥棒作用, ...

  5. Xposed模块开发教程

    转:http://vbill.github.io/2015/02/10/xposed-1/     http://blog.csdn.net/zhangmiaoping23/article/detai ...

  6. 在windows下的CLI模式下如何运行php文件

    https://blog.csdn.net/evkj2013/article/details/52313728 https://jingyan.baidu.com/article/da1091fb09 ...

  7. vue.js 是如何做到数据响应的

    许多前端JavaScript框架(例如Angular,React和Vue)都有自己的数据相应引擎.通过了解相应性及其工作原理,您可以提高开发技能并更有效地使用JavaScript框架.在视频和下面的文 ...

  8. 组装者模式在React Native项目中的一个实战案例

    前言 在实际的开发中,如果遇到多个组件有一些共性,我们可以提取一个BaseItem出来,然后在多个组件中进行复用,一种方式是通过继承的方式,而今天我们要说的是另一种方式--组装者模式. 什么是组装者模 ...

  9. ubuntu下 mysql安装以后无法登陆的的解决方法((ERROR 1698 (28000): Access denied for user 'root'@'localhost'))

    1. 删除mysql sudo apt-get autoremove --purge mysql-server-5.0 sudo apt-get remove mysql-server sudo ap ...

  10. 表格插件datatables

    具体用法查看官网 https://datatables.net/ {% load staticfiles %} <!DOCTYPE html> <html lang="en ...