一、环境准备
确保 yum 包更新到最新, CentOS 是基于 linux 建立的操作系统,因为 linux 与 docker 版本的兼容性问题,不是最新的到后面可能出现兼容性问题导致 docker 或者 mysql 等应用因为兼容性问题无法启动.
#初始化
yum clean all
#更新
yum update
1.安装 jdk
#查看服务器是否有jdk,没有java指令,需要自己安装jdk java -version
#安装完毕后输入,显示jdk版本信息,即安装成功.
java -version
2.安装 docker
#安装docker yum install docker #安装完毕后 #docker开机自启 systemctl enable docker #运行docker systemctl start docker 1234567
#输入 docker version 校验是否安装并启动成功 docker version #有client和service两部分表示docker安装启动都成功了 123
3.docker 内安装 mysql
#docker下拉mysql镜像 docker pull mysql:5.7.16 12
下载完成后:
#查看拉下来的镜像 docker images 12
#准备文件夹 mkdir -p /opt/mysql/data /opt/mysql/logs /opt/mysql/conf 12
- data 目录将映射为 mysql 容器配置的数据文件存放路径
- logs 目录将映射为 mysql 容器的日志目录
- conf 目录里的配置文件将映射为 mysql 容器的配置文件
#运行镜像创建容器 docker run -p 3306:3306 --name mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.16 12
出现报错了,发现应该是 linux 与 docker 版本的兼容性问题,所以一定保证保证自己的 yum 是最新,可以尝试更新 yum 包后尝试再次启动,为避免此类情况,建议一开始就更新。
命令说明: * -p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。 * -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。 * -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。 * -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。 * -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。 123456
#查看正在运行的容器 docker ps #-a 加上后可以查看所有容器 12
出现此画面就是已经启动。
#进入容器mysql docker exec -it mysql bash #进入数据库 p后面跟你的密码 mysql -uroot -p123456 12345
#创建数据库(数据库名:solo;字符集utf8mb4;排序规则utf8mb4_general_ci) create database solo DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; #出现Query OK, 1 row affected (0.00 sec)表示成功 #退出数据库 exit #退出容器 exit 1234567
二.docker 内安装 Solo
#获取最新镜像 docker pull b3log/solo #拉取完毕后查看镜像 docker images 1234
#启动solo docker run --detach --name solo --network=host \ --env RUNTIME_DB="MYSQL" \ --env JDBC_USERNAME="root" \ --env JDBC_PASSWORD="123456" \ --env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \ --env JDBC_URL="jdbc:mysql://127.0.0.1:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" \ b3log/solo --listen_port=8080 --server_scheme=http --server_host=blog.sevenn.top 12345678
- detach: 这个选项告诉 Docker 在启动后将程序与控制台分离,使其进入“后台”运行。
- name solo: solo 是容器的名字,也可以改成自己喜欢的名字如 mysolo,这个无所谓
- RUNTIME_DB=“MYSQL”: 指明我们此处使用的数据库为 MYSQL,如果使用,H2 Database,将 MYSQL 改成 org.h2.Driver 即可
- JDBC_USERNAME=“root”: 指明 MYSQL 数据连接时使用的用户名,默认都是 root
- JDBC_PASSWORD=“123456”: 指明 MYSQL 数据库连接时用户密码,使用时注意将 123456 替换成自己在上一步所设置的密码
- env JDBC_DRIVER=“com.mysql.cj.jdbc.Driver”:数据库连接驱动包,如果使用,H2 Database,将 om.mysql.cj.jdbc.Driver 改成 H2 即可
- server_host=www.wanzizoo.com: 个人域名,如果没有可设置为自己的服务器 ip
- env JDBC_URL=“……”数据库 jdbc 地址,ip 根据自己更换
- listen_port=8080:指明 solo 监听的端口此处使用的是 8080,如果不想配置 nginx 此处可以换成 80
命令执行完成之后没有报错的话,通过 docker ps 查看当前当前容器列表中是否有名字叫 solo 的容器,如果有证明启动成功了,没有 solo,可输入 docker logs solo 查看日志排查,启动成功后可以通过个人域名/ip+:端口来进行访问,类似 http://blog.sevenn.top,如果不想配置 nginx 可以将 8080 换成 80,可以直接通过域名/ip 来直接进行访问。不出意外会出现如下界面(如果出现不能访问的情况考虑是否是防火墙配置有问题,查看是否开放 8080 或者 80 端口):
三、用 Nginx 做端口转发(反向代理)
(未完待续)
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于