注意:下面的教程主要是针对
Centos7
的,如果使用的其他发行版会有细微的差别,请查看官方文档。
Docker安装MySQL、nginx并且部署SpringBoot项目前后端(超详细版)
一、安装Docker
1.卸载旧版
- 首先如果系统中已经存在旧的
Docker
,则先卸载:yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest-logrotate \ docker-logrotate \ docker-engine
2.配置Docker的yum库
-
首先安装一个
yum
工具yum install -y yum-utils
-
安装成功后,执行命令,配置
Docker
的yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3.安装Docker
- 安装Docker
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker --version
4.设置开机自启动
- 设置
Docker
开机自启动,并且重启systemctl enable docker systemctl restart docker
5.配置镜像加速
- 这个也可以不用配置,只是让下载镜像的速度更快而已。
- 这里需要注册一个阿里云的账号,每个人的地址都是唯一的。
二、安装MySQL容器
- 创建
MySQL
文件的存放位置mkdir -p ~/dev/mysql cd ~/dev/mysql mkdir data mkdir conf mkdir init mkdir file ll cd ~
- 将
初始化SQL脚本
放置在init
目录下(没有可以不放) - 注意:这个只有在第一次创建MySQL容器的时候才会初始化,并且一定要在SQL脚本文件中选择database。
- 安装
MySQL
镜像docker run -d \ --name mysql \ -p 3306:3306 \ -e TZ=Asia/Shanghai \ -e MYSQL_ROOT_PASSWORD=123456 \ -v /root/dev/mysql/data:/var/lib/mysql \ -v /root/dev/mysql/init:/docker-entrypoint-initdb.d \ -v /root/dev/mysql/conf:/etc/mysql/conf.d \ -v /home/dev/mysql/file:/var/lib/mysql-files \ mysql
- 创建一个网络并且将
MySQL
加入网络中docker network create GDB docker network connect GDB mysql
三、安装Nginx容器
1.创建Nginx配置文件
- 启动前需要先创建
Nginx
外部挂载的配置文件(~/dev/nginx/conf/nginx.conf)
。 - 之所以要先创建,是因为
Nginx
容器本身只存在etc/nginx
目录,本身就不创建nginx.conf
文件,当服务器和容器都不存在nginx.conf
文件时,执行启动命令的时候dokcer
会将nginx.conf
作为目录创建,这并不是我们想要的结果。# 创建挂载目录 mkdir -p ~/dev/nginx/conf mkdir -p ~/dev/nginx/log mkdir -p ~/dev/nginx/html
- 将容器中的
nginx.conf
文件和conf.d
文件夹复制到宿主机。# 生成容器 docker run --name nginx -p 8801:80 -d nginx # 将容器nginx.conf文件复制到宿主机 docker cp nginx:/etc/nginx/nginx.conf ~/dev/nginx/conf/nginx.conf # 将容器conf.d文件夹下内容复制到宿主机 docker cp nginx:/etc/nginx/conf.d ~/dev/nginx/conf/conf.d # 将容器中的html文件夹复制到宿主机 docker cp nginx:/usr/share/nginx/html ~/dev/nginx/
- 删除前面安装的
nginx
容器docker stop nginx # 关闭该容器 docker rm nginx # 删除该容器
2.创建 Nginx 容器并运行
docker
创建Nginx
容器docker run \ -p 8801:80 \ --name nginx \ -v ~/dev/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v ~/dev/nginx/conf/conf.d:/etc/nginx/conf.d \ -v ~/dev/nginx/log:/var/log/nginx \ -v ~/dev/nginx/html:/usr/share/nginx/html \ -d nginx
3.将 Nginx 加入到自己定义的网络中
- 如果你的
Nginx
做了反向代理并且需要和宿主机上的服务器进行通信,就需要将Nginx
加入和通信服务到一个网络中。docker network connect GDB nginx
四、自定义镜像
- 创建存放应用的目录
mkdir -p ~/myapp/olive-app cd ~/myapp/olive-app
- 编写
Dockerfile
文件,自定义镜像# 基础镜像 FROM openjdk:17 #设定时区 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 拷贝项目 COPY olive-0.1.jar /olive.jar # 入口 ENTRYPOINT ["java", "-jar", "/olive.jar"]
- 将
xxx.jar
和Dockerfile
一起上传到服务器
- 构建自己应用的镜像
docker build -t olive .
- ① 利用镜像生成容器并且加入到前面创建的网络中与MySQL通信
docker run -d --name olive -p 8800:8800 --network GDB olive
- ② 这种方式是在上面的方式上增加了两个挂载目录(我这里是用来存放项目图片的,看自己的需要选择使用哪一条命令)
docker run -d --name olive -v /root/myapp/olive-app/images/avatar:/images/avatar -v /root/myapp/olive-app/images/debug:/images/debug -p 8800:8800 --network GDB olive
五、参考
[1]. 镜像仓库
[2]. Dockerfile的copy复制文件夹
[3]. Docker 安装Nginx容器 (完整详细版)
1.不使用docker安装MySQl和Nginx
[1]. 在Linux实例中安装MySQL数据库
[2]. 【亲测可用】通过Navicat for MySQL远程连接的时候报错mysql 1130的解决方法
[3]. LINUX安装nginx详细步骤