ubuntu系统下安装docker并部署Springboot+mysql+redis
目录
- 安装Docker
- Docker常用命令
- 构建mysql容器
- 构建Redis容器
- 构建Springboot应用镜像及容器
- (1)springboot使用maven将程序打成jar包,接着编写Dokerfile文件,[Dockerfile详细介绍](http://www.dockerinfo.net/dockerfile%e4%bb%8b%e7%bb%8d)
- (2)将打好的jar包与Dockerfile放到linux下同个目录下
- (3)运行命令制作镜像:
- (4)根据Springboot配置文件中mysql的配置运行容器:
- (5)查看springboot运行日志及状态
- 部署过程的异常
- docker运行spring boot 包镜像出现no main manifest attribute问题
- 解决方案
- 参考
安装Docker
最简单的方法:使用国内 daocloud 一键安装命令
curl -sSL https://get.daocloud.io/docker | sh
验证是否安装成功:
docker version
若出现版本信息则说明成功安装了
Docker常用命令
此部分转载自:博主「一路向北0」
1.重启docker服务
systemctl restart docker2.停止docker命令
systemctl stop docker3.查看镜像列表
docker images4.删除镜像
docker rmi image-id5.查看容器列表
docker ps
查看所有容器,包括停止的容器
docker ps -a6.启动以及停止容器
docker start container-name/container-id
docker stop container-name/container-id7.删除容器
docker rm container-id
强制删除容器
docker rm -f container-id8.查看容器日志
docker logs container-name/container-id
查看实时日志
docker logs -f container-name/container-id9.设置 阿里云 加速地址
找到 /etc/docker/ 目录下
vim daemon.json
将以下内容复制到文件中
{
“registry-mirrors”: [“https://rypl6yvv.mirror.aliyuncs.com”]
}
systemctl daemon-reload 通知systemd重载此配置文件
systemctl restart docker 重启docker10.查看最后一次运行的容器
docker ps -l11.查看停止的容器
docker ps -f status=exited12.【外部】复制文件到【容器】中去:
docker cp /外部目录/外部文件 容器名:/容器目录/文件名【若最后写了文件名,就以最后的文件名为主】13.【容器】复制文件到【外部】:
docker cp 容器名:/容器目录/容器中的文件 /外部目录/文件名【若最后写了文件名,就以最后的文件名为主】14.(目录挂载)文件映射:
docker run -di --name=mynginx -p 90:80 -v /usr/html:/usr/share/nginx/html nginx:1.17.5
-v 目录挂载 外部目录:容器目录
-p 端口映射 外部端口:容器端口15.查看容器所有信息:
docker inspect container-name
构建mysql容器
此处构建的是mysql:8.0.18的镜像,构建mysql5.x的镜像可以参考:在docker中运行mysql实例
- 下载mysql镜像:
docker pull mysql:8.0.18 - 运行镜像,设置root账号初始密码(123456),映射本地宿主机端口3306到Docker端口3306。
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /usr/local/mysql/data:/var/lib/mysql:rw -v /usr/local/mysql/mysql-files:/var/lib/mysql-files:rw -v /usr/local/mysql/log:/var/log/mysql:rw -v /usr/local/mysql/config:/etc/mysql:rw -v /etc/localtime:/etc/local/time:ro --restart=always -d mysql:8.0.18
参数说明:
- –name: 指定容器的名称
- -p: 指定本机与容器的映射端口,以此访问容器端口
- -e: 初始化root用户的密码
- -v: 挂载数据。容器里面的数据不能直接访问的,但可通过-v指定本机的目录挂载到容器中实现访问容器的数据
- –restar=always:自动重启,比如服务器突然断电,重启服务器之后不需要你重新手动启动
- -d:以后台的方式运行,即守护线程(Daemon)
查看mysql容器是否运行:
docker ps进入mysql容器:
docker exec -it mysql bash在容器内登陆Mysql:
mysql -uroot -p123456查看用户信息
select host,user,plugin,authentication_string from mysql.user;host为 % 表示不限制ip,localhost表示本机使用。 plugin如果不是mysql_native_password 则需要修改
ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'FLUSH PRIVILEGES; //刷新数据库权限
- 退出mysql容器:
exit
构建Redis容器
与构建mysql容器类似
- 拉取镜像
docker pull redis:latest - 运行容器
docker run -itd --name redis -p 6379:6379 redis - 进入容器,检测redis容器是否运行
docker exec -it redis-test /bin/bash
redis-cli
构建Springboot应用镜像及容器
(1)springboot使用maven将程序打成jar包,接着编写Dokerfile文件,Dockerfile详细介绍
FROM java:8
# 作者
MAINTAINER Darren <754121262@qq.com>VOLUME /tmp
# 将jar包添加到容器的/目录下并更名为user-server.jar
ADD user-server-1.0-SNAPSHOT.jar /user-server.jarEXPOSE 9000
# 运行jar包
RUN bash -c 'touch /user-server.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dfile.encoding=utf-8","-jar","/user-server.jar"]
(2)将打好的jar包与Dockerfile放到linux下同个目录下
(3)运行命令制作镜像:
docker build -t [容器名] .
注意:最后面一个点表示当前目录
(4)根据Springboot配置文件中mysql的配置运行容器:
当springboot项目连接数据的配置文件为:
spring.datasource.url = jdbc:mysql://localhost:3306/spring
运行命令:
docker run --net=host --name=springboot -p 9000:9000 -di springboot:1.0
–net=host 告诉 Docker 不要将容器网络放到隔离的名字空间中,即不要容器化容器内的网络。此时容器使用本地主机的网络,它拥有完全的本地主机接口访问权限。容器进程可以跟主机其 它 root 进程一样可以打开低范围的端口,可以访问本地网络服务比如 D-bus,还可以让容器做一些影响整个主机系统的事情,比如重启主机。因此使用这个选项的时候要非常小心。如果进一步的使用 --privileged=true,容器会被允许直接配置主机的网络堆栈。
当springboot项目连接数据的配置文件为:
spring.datasource.url = jdbc:mysql://mysql:3306/spring
即:有数据库别名的时候
# --link 连接提供mysql服务的容器,冒号后面是配置文件中数据库的别名,别名应该和代码中的数据库地址一致
docker run --link mydata:mysql --name=springboot-p 9000:9000 -di springboot:1.0# --link 链接,mydata为已经在运行的数据库镜像的别名,冒号后面是配置文件中数据库的别名,这里配置文件中数据库的别名为mysql
# --name 为容器的别名
# -p 为端口号映射 80 为外部访问端口,8090为容器对宿主机的映射端口
# -d后台运行容器
# -i以交互模式运行容器
# 镜像名:版本号
(5)查看springboot运行日志及状态
docker ps
docker logs -f [容器名]
部署过程的异常
docker运行spring boot 包镜像出现no main manifest attribute问题
运行命令docker logs 【容器ID】,查看运行日志
no main manifest attribute
即springboot程序没有入口类
解决方案
项目基于maven pom多模块的开发的,需要设置goal-repackage属性为true,否则打包后文件依赖文件没有一起打包,然后镜像内没有可以运行的程序文件
<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><!-- 指定该Main Class为全局的唯一入口 --><mainClass>com.zcj.email.EmailApplication</mainClass><layout>ZIP</layout></configuration><executions><execution><goals><!--可以把依赖的包都打包到生成的Jar包中--><goal>repackage</goal></goals></execution></executions>
</plugin>
参考
- docker安装mysql8.0.18
- Ubuntu Docker 安装
- docker 安装以及部署springboot项目和连接mysql
- 完整的docker+springboot+mysql部署
- 在docker中运行mysql实例
- docker运行spring boot 包镜像出现no main manifest attribute问题
ubuntu系统下安装docker并部署Springboot+mysql+redis相关推荐
- 迅为RK3399开发板支持在Ubuntu系统下安装Docker
Docker提供了打包应用软件及其运行环境的机制,降低了应用配置管理的复杂度,可以将开发环境.代码.配置文件等一并打包到这个容器中,并发布和应用到任意平台中,极大提升了应用交付的效率. Docker一 ...
- 在ubuntu系统下安装python
一.背景介绍 随着本人python使用的越来越多,跑的代码和程序越来越复杂,从git下载代码也更多的需要liux系统才能使用,所以考虑在ubuntu系统下安装python,此博文也是基于CSDN7天培 ...
- 在ubuntu系统下安装缺少的字体(一般缺少中文字体)
在ubuntu系统下安装缺少的字体 cite:Ubuntu LaTeX 环境配置:https://www.cnblogs.com/xqmeng/p/13931222.html 第一步:下载缺少的字体 ...
- 终端linux输入法安装程序,在Ubuntu系统下安装百度输入法Linux版的方法
本文介绍在Ubuntu系统下安装百度输入法Linux版(也称为百度Linux输入法)的方法,以Ubuntu 18.04版本为例说明.说明:该输入法支持在Ubuntu 18.04.1810.1904.1 ...
- Ubuntu系统下安装ssh的方法
1.用Ctrl+Alt+T打开Ubuntu终端,输入sudo apt-get update命令–>回车–>输入当前登录用户的管理员密码–>回车以实现更新Ubuntu系统: 2.安装s ...
- IntelliJ IDEA使用教程(动图详解):Ubuntu 系统下安装 IntelliJ IDEA
Ubuntu 系统下安装 IntelliJ IDEA 系统要求 系统支持:只要是支持 GNOME 或 KDE 桌面系统,建议是 Ubuntu(32位和64位都可以) JDK 版本:Oracle JDK ...
- Ubuntu系统下安装eclipse
Ubuntu系统下安装eclipse 想要正确的安装eclipse,需要在Ubuntu系统上提前安装jdk 可以在终端使用java -version来查看是否安装jdk 如果没有安装jdk,可以参考网 ...
- 在Ubuntu系统中安装Docker
对于Ubuntu系统,Docker现在只啊吃以下版本. Ubuntu Xenial 16.04 (LTS) Ubuntu Wily 15.10 Ubuntu Trusty 14.04 (LTS) Ub ...
- ubuntu 系统下安装 xlwt
今天在ubuntu 系统下使用pip安装xlwt 报错了如下 然后安装一个easy_install工具 在终端中输入: sudo apt-get install python-setuptools 安 ...
最新文章
- linux 文件IO与内存映射:内存映射
- Android--学习路线指南
- Ajax——从服务器获取各种文件
- sqserver对比oracle的区别,oracle和sqlserver比较
- 设计模式(3)策略模式
- python 读取文本文件_如何在Python中读取大文本文件
- Android平板软件推荐,Android平板电脑必备软件推荐
- 小米路由器显示无法连接服务器错误代码,小米路由器:路由器无法上网怎么办...
- 爬虫-抖音无水印视频下载
- 单页面网站如何高效做SEO优化?
- 二分+贪心——HDU 5855
- java ews_Java---使用EWS读取exchange邮件
- Docker容器之compose容器集群的快速编排
- Jetpack Compose中的手势操作
- 七彩虹平板刷成android,大功告成 七彩虹G808首个MIUI ROM移植
- vpp之浅谈插件和使用
- Ubuntu 软件仓库源
- SQL中DATEADD和DATEDIFF的使用方法
- 从拖延到高效,我推荐这7本书
- qq邮箱 北航邮箱配置 foxmail
热门文章
- P4827 [国家集训队] Crash 的文明世界
- 如何正确地生成一个随机数
- H.Minimum-cost Flow
- CF204E-Little Elephant and Strings【广义SAM,线段树合并】
- jzoj2700-数字【数论,LCM】
- 2018/7/6-纪中某C组题【jzoj1192,jzoj1397,jzoj1736】
- 【DP】合唱队形(jzoj 1122)
- 【深搜】 棋盘 【NOIp普及组 2017 第三题】 (luogu 3956/ssl 2851)
- 牛客网暑期ACM多校训练营(第九场)
- 组合数学与数论函数专题