【docker】docker部署spring boot项目在服务器上
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项目在服务器上的更多相关文章
- docker部署spring boot项目在服务器上
IDE:idea 工具:docker spring boot:2.0.1 ======================================== 简单记录一下流程,以供参考: 第一步:首先得 ...
- 在Docker中部署Spring Boot项目
想要获取更多文章可以访问我的博客 - 代码无止境. 微服务现在在互联网公司可谓非常流行了,之前找工作的的时候很多HR电话约面试的时候都会问对微服务是否有过接触.而微服务和Docker可以非常完美的结合 ...
- IDEA连接远程服务器Docker部署Spring Boot项目
开始前的准备工作 拥有一台云服务器,我的是腾讯云服务器(CentOS7) 腾讯云服务器安装Docker,我的版本是Docker 19.03.9,关于安装和配置镜像加速器可以查阅我的另一篇博文:http ...
- Windows Docker 部署 Spring Boot 项目
目录 Docker Configuration Config IDEA Plugin Create Spring Boot Project Containerize It Use Dockerfile ...
- 使用 Docker 部署 Spring Boot 项目
Docker 介绍 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口.它是目前最流行的 Linux 容器解决方案. Docker 将应用程序与该程序的依赖,打包在一个文件里面 ...
- 使用Docker部署Spring boot项目
Docker是一个使用广泛的Linux容器管理工具包,它允许用户创建镜像,并将其容器实例化.通过本指南,我们可以学习到如何使用Docker部署Spring Boot项目. 先决条件 开发之前,你必须具 ...
- Docker Gitlab CI 部署 Spring Boot 项目
目前在学习这一块的内容,但是可能每个人环境都不同,导致找不到一篇博客能够完全操作下来没有错误的,所以自己也写一下,记录一下整个搭建的过程. Docker 的安装这里就不赘述了,基本上几行命令都可以了, ...
- 使用 Docker 部署 Spring Boot 项目,带劲!!
上一篇:年轻人的第一个 Docker 应用 Docker 一次构建.处处运行及快速启停的特性,在微服务架构中有着举足轻重的地位,具体的概念性的东西就不介绍了,不懂的点击这里阅读 Docker 基础教程 ...
- 从零部署Spring boot项目到云服务器(正式部署)
上一篇文章总结了在Linux云服务器上部署Spring Boot项目的准备过程,包括环境的安装配置,项目的打包上传等. 链接在这里:http://www.cnblogs.com/Lovebugs/p/ ...
随机推荐
- GUC-9 ReadWriteLock : 读写锁
import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWrit ...
- HBase(三)HBase架构与工作原理
一.系统架构 注意:应该是每一个 RegionServer 就只有一个 HLog,而不是一个 Region 有一个 HLog. 从HBase的架构图上可以看出,HBase中的组件包括Client.Zo ...
- Opencv算法运行时间
使用getTickCount() 需要导入命名空间cv,using namespace cv; double t = getTickCount(); funciont(); double tm = ( ...
- nullptr
以前都是用0来表示空指针的,但由于0可以被隐式类型转换为整形,这就会存在一些问题.关键字nullptr是std::nullptr_t类型的值,用来指代空指针.nullptr和任何指针类型以及类成员指针 ...
- Python全栈开发之16、jquery
一.查找元素 1.选择器 1.1 基本选择器 $("*") $("#id") $(".class") $("ele ...
- 基于Thinkphp3.2的qq第三方oauth认证登录扩展类
基于Thinkphp3.2的qq第三方oauth认证登录扩展类,由于腾讯oauth sdk写的太多,不能与thinkphp和好的结合,最终想法讲腾讯oauth sdk写成tp的扩展类先看代码,将代码保 ...
- 基于ONVIF协议的摄像头开发总结
<什么是ONVIF协议> 2008年5月,由安讯士(AXIS)联合博世(BOSCH)及索尼(SONY)公司三方宣布携手共同成立一个国际开放型网络视频产品标准网络接口开发论坛,取名为 ...
- get与post区别大揭秘
以往的标准答案: GET在浏览器回退时是无害的,而POST会再次提交请求. GET请求会被浏览器主动cache,而POST不会,除非手动设置. GET请求只能进行url编码,而POST支持多种编码方式 ...
- Struts2 (下)
接收参数 当发送一个请求时,除了使用RequestApi来接收参数之外,Struts2内部提供了3种接收参数的方式 接收参数的方式 1. 提供属性set方法的方式 在Action当中提供对应属性的se ...
- BZOJ 1528 [POI2005]sam-Toy Cars(优先队列)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1528 [题目大意] 地上最多可以放k个玩具,现在给出需求顺序, 问最少需要去架子上拿几 ...