云原生应用11:SpringBoot应用打包成docker镜像_zhuyu19911016520-CSDN博客

沙海
沙海
沙海
994
文章
2
评论
2021年4月27日03:43:58
评论
2 2305字阅读7分41秒
摘要

云原生应用11:SpringBoot应用打包成docker镜像

云原生应用11:SpringBoot应用打包成docker镜像

云原生应用11:SpringBoot应用打包成docker镜像_zhuyu19911016520-CSDN博客

闪耀的瞬间
2019-11-02 19:31:15
云原生应用11:SpringBoot应用打包成docker镜像_zhuyu19911016520-CSDN博客
298

云原生应用11:SpringBoot应用打包成docker镜像_zhuyu19911016520-CSDN博客

收藏


分类专栏:
云原生
SpringBoot 项目开发
文章标签:
kubernetes

版权

云原生应用11:SpringBoot应用打包成docker镜像_zhuyu19911016520-CSDN博客

本文将介绍SpringBoot开发的应用打包成docker镜像,然后运行镜像为容器

依赖Docker:docker安装 依赖MySql:

  • 下载mysql镜像,docker pull mysql:5.7.26
  • 运行为容器,设置数据存储到宿主机,root用户密码:

    注意后面的–lower_case_table_names=1配置,忽略大小写,小心被坑

docker run -d --name mysql -v /data/mysql:/var/lib/mysql --rm -p 3306:3306 \
-v /root/mysql/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
-e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.26  --lower_case_table_names=1
123

mysqld.cnf配置文件内容可以从mysql容器中复制出来,内容如下:

# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
#log-error      = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address   = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

#从 show variables like '%sql_mode'; 里面复制出来,并去掉了 only_full_group_by 
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
1234567891011121314

应用打包成docker镜像,使用Dockerfile文件,里面编写打包的指令,需要注意的是此应用用到了宿主机的目录存储文件

1.Dockerfile文件

把sisco.jar上传到服务器sisco目录,在sisco目录中创建Dockerfile文件,内容如下,依赖 openjdk 镜像,把当前目录的sisco.jar复制到镜像的/usr/目录中,定义一个PARAMS参数,运行镜像时添加自定义参数,如:-Dspring.profiles.active=default -DXms=300m 等

FROM openjdk:8-jdk-alpine
COPY ["sisco-0.0.1-SNAPSHOT.jar" , "/usr/"]
ENV PARAMS=""
ENTRYPOINT ["sh" , "-c" , "java $PARAMS  -jar /usr/sisco-0.0.1-SNAPSHOT.jar"]
1234

2.打包成镜像

docker打包镜像有两种方式,1.使用docker commit,2.使用Dockerfile文件,本文使用Dockerfile文件 在sisco目录中,执行命令:

docker build -t sisco:v0.1 ./ 
1

使用docker images 查看镜像 云原生应用11:SpringBoot应用打包成docker镜像_zhuyu19911016520-CSDN博客

3.运行为容器

sisco目录中内容如下,有Dockerfile文件,有sisco.jar,sisco应用上传的文件存放到web目录中 云原生应用11:SpringBoot应用打包成docker镜像_zhuyu19911016520-CSDN博客 start_mysql.sh内容:docker run -d --name mysql -v /data/mysql:/var/lib/mysql --rm -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.26 start.sh内容:docker run -d --name sisco --rm -v /home/sisco/web:/usr/web -p 8000:8080 -e PARAMS="-Dspring.profiles.active=prod -DXms=300m -DXmx=300m -Dsisco.config.filePath=usr/web/" sisco:v0.1

把运行mysql与运行sisco应用的命令放到对应的脚本文件中,只要执行:

  • 启动mysql:sh start_mysql.sh
  • 启动sisco:sh start.sh

start.sh的内容简单解释下:

  • docker run,运行容器
  • -d ,后台启动
  • –name ,设置容器的名称
  • –rm,容器停止时删除历史记录,否则通过sisco名称的容器还存在
  • -v,定义宿主机目录与容器的映射关系,容器中的程序操作 usr/web 目录就是在操作宿主机的 /home/sisco/web 目录
  • -p 8000:8080,宿主机8000端口绑定容器的8080端口
  • -e PARAMS,为Dockerfile中预留的参数,可指定运行java应用需要的参数
  • 最后为镜像名称为tag

查看运行中的容器,可看到容器绑定的端口 云原生应用11:SpringBoot应用打包成docker镜像_zhuyu19911016520-CSDN博客 然后访问容器,http://192.168.68.134:8000 云原生应用11:SpringBoot应用打包成docker镜像_zhuyu19911016520-CSDN博客

继续阅读
weinxin
资源分享QQ群
本站是一个IT技术分享社区, 会经常分享资源和教程; 分享的时代, 请别再沉默!
沙海
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: