Docker安装Apollo
Docker安装Mysql
使用Docker安装Mysql是比较方便的,最简单的只需一句命令即可完成。但如需安装且配置好则需要准备一点前期工作
拉取镜像
docker pull mysql
使用命令拉取mysql的镜像包,如需指定版本添加接口,不指定默认latest。
创建挂载目录
拉取镜像后建议将配置文件,数据,日志挂载出来。方便后续修改配置或排查问题。
mkdir -p /opt/mysql/conf
mkdir -p /opt/mysql/data
mkdir -p /opt/mysql/logs
创建配置文件
创建完挂载目录后在 /opt/mysql/conf目录下创建my.cnf文件,文件内容即为Mysql配置文件内容。
[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将挂载目录、配置文件映射好。
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
拉取镜像
Docker安装Apollo首先需要拉取apollo所需要的镜像包,apollo所需的镜像包有三个。分别是apollo-configservice、apollo-adminservice、apollo-portal。
docker pull apollo-configservice
docker pull apollo-adminservice
docker pull apollo-portal
与上述安装Mysql一致,如不指定版本则默认latest
准备配置数据
首先需要apollo配置数据的sql脚本文件。可在apollo的github上获取。
apollo github地址
获取到脚本文件后在Navicat 刚创建的Mysql连接中运行即可。
运行之后修改apolloconfigdb数据库的serverconfig表中的eurekaUrl的值
将Ip地址替换为服务器IP,端口可以修改可以不修改,对应后续启动容器时的端口。
运行容器
因为apollo拉取了三个镜像包,所以自然需要运行三个容器。且运行容器的顺序建议先是config,再是admin,最后才是portal
启动config
docker run -itd --net=apollo_default --restart=always -p 9180:8080 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://IP:3307/apolloconfigdb?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=123456 \
-d -v /tmp/logs:/opt/logs --name apollo-configservice apollo-configservice
其中 IP需要替换为对应的IP,–net 需要选择一个存在的bridge类型的网络。可创建,以下启动apollo其他容器相同适用。
启动admin
docker run -itd --net=apollo_default --restart=always -p 9181:8090 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://IP:3307/apolloconfigdb?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=123456 \
-d -v /tmp/logs:/opt/logs --name apollo-adminservice apollo-adminservice
启动portal
docker run -itd --net=apollo_default --restart=always -p 9182:8070 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://IP:3307/apolloportaldb?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=123456 \
-e APOLLO_PORTAL_ENVS=dev \
-e DEV_META=http://IP:9180 \
-d -v /tmp/logs:/opt/logs --name apollo-portal apollo-portal
运行验证
启动成功后可使用命令查看容器状态
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映射左右端口需一致,均为服务器端口