整理一下基于Ubuntu20.04版本搭建docker,基于docker安装mysql5.7,并部署springboot项目的过程。
Vmware虚拟机配置8G内存+50G存储+4核CPU,linux发行版Ubuntu20.04,docker最新版,MySQL5.7
Ubuntu 20.04 官方 apt 源中就有 Docker,我们可以直接通过 apt 来安装。执行下述命令:
sudo apt update
sudo apt install docker.io
docker --version
由于 docker 默认镜像仓库在海外,所以需要配置国内源来加快镜像拉取速度,修改 /etc/docker/daemon.json (如果该文件不存在,则创建)
{
"registry-mirrors": [
"https://你自己的地址.com"
]
}
重启 docker 守护进程
sudo systemctl restart docker
1、拉取mysql镜像
docker pull mysql:5.7
2、设置配置文件
将全部的配置文件和关联的文件夹统一放到 /opt/docker/mysql
中
创建 MySQL 配置文件文件夹
mkdir -p /opt/docker/mysql/conf.d
增加并修改配置文件 config.cnf
vim /opt/docker/mysql/conf.d/config.cnf
输入如下内容:
[mysqld]
lower_case_table_names=1
datadir=/var/lib/mysql
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
3、启动
创建 MySQL 数据文件夹
mkdir -p /opt/docker/mysql/var/lib/mysql
启动,设置默认密码 root
,TZ 设置容器的默认时区
docker run --name mysql \
--restart=always \
-p 3306:3306 \
-v /opt/docker/mysql/conf.d:/etc/mysql/conf.d \
-v /opt/docker/mysql/var/lib/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-e TZ=Asia/Shanghai \
-d mysql:5.7
进入容器
docker exec -it mysql bash
进入 MySQL
mysql -uroot -p
输入刚才我们设置的密码 root
授权
mysql> GRANT ALL ON *.* TO 'root'@'%';
刷新权限
mysql> flush privileges;
至此mysql5.7部署完成。详细过程参考文章(【Docker搭建】1. 在Docker中安装MySQL5.7 - 无尽函数 - 博客园)
此过程不详细讲解,参考其它文档maven打包方式,基本过程如下:
mvn clean package
利用ssh等工具将jar包上传至服务器的/data/deploy/目录下(目录根据自己实际情况自定义),
如果此时报权限不足,需执行命令给当前目录授权:
chmod 777 /data/deploy
FROM java:8
VOLUME /tmp
COPY spring-boot.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
将此文件上传至/data/deploy/目录下(与jar包同目录)。
执行下述命令(注意.)
docker build -t spring-boot .
制作完成后,通过docker images命令查询
启动容器
docker run --name=spring-boot \
--restart=always \
-p 8088:8088 \
-v /data/logs:/data/logs \
-e TZ=Asia/Shanghai \
-d spring-boot
进入容器,查看启动日志
docker exec -it 27566069c4da bash
查看日志,进入/data/logs/spring-boot下
容器启动成功!
先检查服务器防火墙情况,是否开启8088端口
ufw status
如果没有开启端口,执行命令ufw allow 8088开启端口支持。
通过postman访问服务接口
至此,我们在Ubuntu服务器上,基于docker部署springboot项目完成!
前几天作者在阿里云上购买了一台轻量级应用服务器,想作为学习开发环境使用,本想基于这套服务搭建一套K8S环境,安装完成后,启动时,发现服务器配置过低,无法启动K8S!无奈之下,只好寻求售后进行退款!后来,在本地电脑上基于虚拟机安装了一个Ubuntu系统,在安装k8s时,发现主板不支持VX虚拟化设置。。笔者只好默默放弃了搭建。所以,只能基于当前的docker环境模拟一下我们后端服务打包、部署的流程!好在经过查阅文档后,一次性成功!后续有机会再基于jekins结合docker搭建一套持续集成、发布环境!
作为一名高级后端开发人员,在目前这个竞争压力如此大的环境下,需不断提升自己的硬实力!掌握一定的devops能力才能在云原生时代利于不败之地!
欢迎大家一起学习交流!一起努力!