复制代码
所有代码直接用 Terminal(终端)执行,无需root权限。
清空:
sqlite3 ~/Library/Application\ Support/Dock/*.db 'DELETE FROM apps' &&killall Dock
复制代码
清空后可以将 App 拖入 Launchpad
重置:
rm -f ~/Library/Application\ Support/Dock/*.db &&killall Dock
复制代码
会恢复 Launchpad 至出厂设置(苹果自家应用在第一页)
隐藏 App:
现在可以使用新的工具来隐藏 Launchpad 的应用了
http://mac.pcbeta.com/viewthread.php?tid=60410&extra=
手动整理:
首先需要一个 SQLite 数据库编辑器(下载 Base 2.1)
删除:把在 ~/Library/Application Support/Dock/ 里面的 .db 文件打开,把想要删除的东西删掉
重建缓存:把 image_cache 表 drop 掉即可
保存数据库后
killall Dock
有 Apollo 用户已经提供了现成的 Dcoker 镜像 ,我们可以直接使用。不过这里还是将通过编译源代码的方式来介绍,目的是从最原始 *** 作开始,了解整个过程的实现。环境要求
JDK 1.8+ (安装后,修改 Path 环境变量)Maven 3.5+ (安装后,修改 Path 环境变量,建议修改 Maven 源地址,加快下载速度)MySQL 5.6.5+Docker JDK 和 Maven 只在编译 Apollo 源代码时使用,实际使用 Docker 部署并不需要。
创建数据库
从部署策略图中可以看出,搭建 Apollo 环境需要使用到 PortalDB、ConfigDB 两个数据库,这两个数据库的初始脚本官方源码中已提供:
我们需要在自己的数据库上执行以上两个文件的脚本,这里将搭建一个基于 PRO 的分布式环境( 如果需要支持多个环境,需要在对应环境的数据库上建 ConfigDB,服务启动改成对应环境的数据库连接,更多请参考 调整ApolloPortalDB配置 和 调整ApolloConfigDB配置 ),如下: #构建 Docker 镜像 1. 下载最新 apollo master 分支 代码(当前是 1.5.0-SNAPSHOT),网上很多介绍都需要修改源代码后再进行编译,这个版本已有哥们提交了 Merge Request ,使在 Docker 部署上更简化了。如有特殊需要,也可自行修改源码。 2. 下载完成后在根目录下执行 .\scripts\build.bat(我是在 windows 进行编译的),编译成功后在 apollo-adminservice、apollo-configservice、apollo-portal 下的 target 目录会生成对应压缩包 pollo-configservice-1.5.0-SNAPSHOT-github.zip、apollo-adminservice-1.5.0-SNAPSHOT-github.zip、apollo-portal-1.5.0-SNAPSHOT-github.zip,这个几个文件就是我们在构建 Docker 镜像需要的 3. pollo源码中已经提供了构建 Docker 镜像的 Dockerfile 文件,apollo-configservice\src\main\docker\Dockfile、apollo-adminservice\src\main\docker\Dockfile、apollo-portal\src\main\docker\Dockfile 可以直接使用,最终如下: 4. 分别构建 Docker 镜像,然后可以通过 docker push 推送到自己的 Docker 仓库,比如 我的仓库 ,或者在要部署是机器上生成 Docker 镜像直接使用,最终得到 apollo-configservice、apollo-adminservice、apollo-portal 3个镜像。
编写 docker-compose
apollo-configservice &&apollo-adminservice:
version: '3'
services:
apollo-configservice:
image: apollo-configservice:latest # 镜像地址,这里使用的是直接在当前主机上构建的镜像
ports:
- "8080:8080"
volumes:
# 日志挂载
- /usr/local/apollo/servers/server2/logs/apollo-configservice:/opt/logs
environment:
# 可通过 SERVER_PORT 指定默认启动端口,ports 也需要对应修改
# SERVER_PORT: 8080
# 指定 homePageUrl 为当前宿主的 apollo-configservice 地址,不然会出现无法访问
JAVA_OPTS: "-Deureka.instance.homePageUrl=http://${当前主机IP}:8080"
# 数据库连接地址
DS_URL: "jdbc:mysql://${数据库IP}:${数据库Port}/ApolloConfigDB?characterEncoding=utf8"
# 数据库用户名
DS_USERNAME: "apollo"
# 数据库密码
DS_PASSWORD: "123456"
apollo-adminservice:
image: apollo-adminservice:latest # 镜像地址,这里使用的是直接在当前主机上构建的镜像
ports:
- "8090:8090"
volumes:
# 日志挂载
- /usr/local/apollo/servers/server2/logs/apollo-adminservice:/opt/logs
environment:
# 指定 homePageUrl 为当前宿主的 apollo-adminservice 地址,不然会出现无法访问
JAVA_OPTS: "-Deureka.instance.homePageUrl=http://${当前主机IP}:8090"
# 数据库连接地址
DS_URL: "jdbc:mysql://${数据库IP}:${数据库Port}/ApolloConfigDB?characterEncoding=utf8"
# 数据库用户名
DS_USERNAME: "apollo"
# 数据库密码
DS_PASSWORD: "123456"
depends_on:
- apollo-configservice
apollo-portal:
version: '3'
services:
apollo-portal:
image: apollo-portal:latest # 镜像地址,这里使用的是直接在当前主机上构建的镜像
container_name: apollo-portal
ports:
- "8070:8070"
volumes:
# 日志挂载
- /usr/local/apollo/servers/server1/logs/apollo-portal:/opt/logs
environment:
# 数据库连接地址
DS_URL: "jdbc:mysql://${数据库IP}:${数据库Port}/ApolloPortalDB?characterEncoding=utf8"
# 数据库用户名
DS_USERNAME: "apollo"
# 数据库密码
DS_PASSWORD: "123456"
# META_SERVER 地址,如 http://192.168.100.234:8080,http://192.168.100.234:8081(多个可用,分隔,建议使用 LB 域名),
PRO_META: "http://${实例1的 apollo-configservice 地址},http://${实例2的 apollo-configservice 地址}"
初始数据库数据修改
ApolloPortalDB 库的 ServerConfig 表 apollo.portal.envs 和 configView.memberOnly.envs 值修改为:pro;(因为这里我们搭建的是 PRO 的分布式环境)
ApolloConfigDB 库的 ServerConfig 表 eureka.service.url 值修改为:http://${实例1的 apollo-configservice 地址}/eureka/,http://${实例2的 apollo-configservice 地址}/eureka/;
启动服务
这里将在同一个机器上启动 1 个 apollo-portal 实例(端口 8070),2 个 apollo-configservice(端口 8080、8081)和 2 个 apollo-adminservice(端口 8090、8091)。
注意:启动的过程会比较慢,一般会在 100~200s 左右
通过访问** http://${apollo-portal 服务IP}:8070 **,输入默认用户名密码 apollo/admin 登录:(当前的测试脚本提供一个默认的测试项目,新版本的 sql 脚本可能没有 SampleApp) 通过 管理员工具 =>系统信息 可查看当前环境信息: 可以看出 Config Services 和 Admin Services 都是两个实例,我们可以模拟 kill 其中一台,服务依然是可以正常使用的。
接下来就可以创建应用,添加配置信息,提供给客户端使用,具体客户端如何使用后续将会继续介绍。
docker可以支持把一个宿主机上的目录挂载到镜像里。docker run -it -v /home/dock/Downloads:/usr/Downloads ubuntu64 /bin/bash
通过-v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径。
现在镜像内就可以共享宿主机里的文件了。
默认挂载的路径权限为读写。如果指定为只读可以用:ro
docker run -it -v /home/dock/Downloads:/usr/Downloads:ro ubuntu64 /bin/bash
docker还提供了一种高级的用法。叫数据卷。
数据卷:“其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的”。感觉像是由一个容器定义的一个数据挂载信息。其他的容器启动可以直接挂载数据卷容器中定义的挂载信息。
看示例:
docker run -v /home/dock/Downloads:/usr/Downloads --name dataVol ubuntu64 /bin/bash
创建一个普通的容器。用--name给他指定了一个名(不指定的话会生成一个随机的名子)。
再创建一个新的容器,来使用这个数据卷。
docker run -it --volumes-from dataVol ubuntu64 /bin/bash
--volumes-from用来指定要从哪个数据卷来挂载数据。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)