使用Docker安装Mysql是比较方便的,最简单的只需一句命令即可完成。但如需安装且配置好则需要准备一点前期工作
1 |
docker pull mysql |
使用命令拉取mysql的镜像包,如需指定版本添加接口,不指定默认latest。
拉取镜像后建议将配置文件,数据,日志挂载出来。方便后续修改配置或排查问题。
1 2 3 |
mkdir -p /opt/mysql/conf mkdir -p /opt/mysql/data mkdir -p /opt/mysql/logs |
创建完挂载目录后在 /opt/mysql/conf目录下创建my.cnf文件,文件内容即为Mysql配置文件内容。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[mysqld] port=3307 user=mysql character-set-server=utf8 default_authentication_plugin=mysql_native_password secure_file_priv=/var/lib/mysql expire_logs_days=7 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION max_connections=1000 lower_case_table_names = 1 [client] default-character-set=utf8 [mysql] default-character-set=utf8 |
挂载目录与配置文件准备好后,即可使用命令运行Mysql容器,使用-v将挂载目录、配置文件映射好。
1 |
docker run --name mysql -p 3307:3307 -v /opt/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /opt/mysql/data:/var/lib/mysql -v /opt/mysql/log:/var/log/mysql -e MYSQL_ROOT_PASSWORD=123456 --restart=always --privileged=true -d mysql |
如果配置文件中未设置port端口,则-p则需要为3306:3306
使用Navicat创建连接测试即可。账号为root,密码为启动容器时设置的。端口为配置文件中设置的,如未设置端口则为默认3306端口。
Docker安装Apollo首先需要拉取apollo所需要的镜像包,apollo所需的镜像包有三个。分别是apollo-configservice、apollo-adminservice、apollo-portal。
1 2 3 |
docker pull apolloconfig/apollo-configservice docker pull apolloconfig/apollo-adminservice docker pull apolloconfig/apollo-portal |
与上述安装Mysql一致,如不指定版本则默认latest
首先需要apollo配置数据的sql脚本文件。可在apollo的github上获取。
https://github.com/apolloconfig/apollo/tree/master/scripts/sql
获取到脚本文件后在Navicat 刚创建的Mysql连接中运行即可。
运行之后修改apolloconfigdb数据库的serverconfig表中的eurekaUrl的值
注意:如果是docker desktop部署,要修改为宿主机的内网IP
将Ip地址替换为服务器IP,端口可以修改可以不修改,对应后续启动容器时的端口。
因为apollo拉取了三个镜像包,所以自然需要运行三个容器。且运行容器的顺序建议先是config,再是admin,最后才是portal
1 2 3 4 |
docker run -p 8080:8080 \ -e SPRING_DATASOURCE_URL="jdbc:mysql://数据库IP:3306/ApolloConfigDB?characterEncoding=utf8" \ -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root \ -d -v /tmp/logs:/opt/logs --name apollo-configservice apolloconfig/apollo-configservice |
其中 IP需要替换为对应的IP,–net 需要选择一个存在的bridge类型的网络。可创建,以下启动apollo其他容器相同适用。
1 2 3 4 |
docker run -p 8090:8090 \ -e SPRING_DATASOURCE_URL="jdbc:mysql://数据库IP:3306/ApolloConfigDB?characterEncoding=utf8" \ -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root \ -d -v /tmp/logs:/opt/logs --name apollo-adminservice apolloconfig/apollo-adminservice |
1 2 3 4 5 6 |
docker run -p 8070:8070 \ -e SPRING_DATASOURCE_URL="jdbc:mysql://数据库IP:3306/ApolloPortalDB?characterEncoding=utf8" \ -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root \ -e APOLLO_PORTAL_ENVS=dev \ -e DEV_META=http://config服务IP:8080 -e PRO_META=http://config服务IP:8080 \ -d -v /tmp/logs:/opt/logs --name apollo-portal apolloconfig/apollo-portal |
启动成功后可使用命令查看容器状态
1 |
docker ps |
或者查看日志,因为上述命令将日志挂载出来了,所以再挂载目录地址下可查看日志信息。
或者打开http://Ip:9182/
查看是否能打开apollo页面
apollo默认账号密码为 apollo 与 admin
如果mysql密码使用了特殊字符,则会出现pid – just quit unexpectedly, please check logs under /opt/logs/100003171 and /tmp 报错
如果mysql设置了大小写敏感,则可能出现Table ApolloConfigdb not exists报错。
如果使用的–net 属性为host 的网络,则可能出现无法连接到eureka地址
并且如果使用的为 host属性的网络,-p映射左右端口需一致,均为服务器端口
from:https://blog.csdn.net/DOCUVIX/article/details/125151290