最近redhat 开源了quay 容器镜像管理平台,参考官方文档跑的时候需要订阅,各种不好使,然后就自己基于源码构建了
一个镜像(使用官方的dockerfile,构建出来的太大了1.9G 以及push docker hub 了),然后参考官方文档运行,各种不
好使,结合查看源码进行摸索,终于部分跑起来了,功能尽管很强大,但是有点费事,以下是安装以及碰到的问题解决方
法的记录
环境准备
docker-compose 构建好的镜像以及push dockerhub了
dalongrong/quay
- docker-compose 文件
version: "3"
services:
postgres:
image: postgres:10
ports:
- "5432:5432"
environment:
- "POSTGRES_PASSWORD:dalong"
redis:
image: redis
ports:
- "6379:6379"
privileged: true
quay-migration:
image: dalongrong/quay:v3.1.2
command: migrate
env_file:
- .env
privileged: true
ports:
- "8443:8443"
quay-config:
image: dalongrong/quay:v3.1.2
command: config
env_file:
- .env
privileged: true
ports:
- "8443:8443"
quay-deploy:
image: dalongrong/quay:v3.1.2
env_file:
- .env
privileged: true
volumes:
- "./quay/config:/conf/stack:Z"
- "./quay/storage:/datastorage:Z"
ports:
- "443:8443"
- "80:8080"
quay-mirror:
image: dalongrong/quay:v3.1.2
command: repomirror
privileged: true
env_file:
- .env
volumes:
- "./quay/config:/conf/stack"
- 启动
docker-compose up -d
- 环境变量配置
这个目前是一个坑,官方文档与实际运行效果不一致(可能是自己构建的原因),同时对于mysql 当前部分字段设计也不太合理(列的长度错误)
QUAY_OVERRIDE_CONFIG={"DATABASE_SECRET_KEY": "anothercrazykey!"}
ENCRYPTED_ROBOT_TOKEN_MIGRATION_PHASE=add-new-fields
CONFIG_APP_PASSWORD=dalong
- 说明
以上几个参数是结合官方的测试以及源码,暂时摸索的,ENCRYPTED_ROBOT_TOKEN_MIGRATION_PHASE
的参数为以下
add-new-fields
backfill-then-read-only-new
stop-writing-both
remove-old-fields
首次的话,可以使用通过这几个阶段配合使用(目前看到是有bug,表设计上的)
安装
- 启动依赖组件
mysql redis
docker-compose up -d postgres redis
- 启动配置服务
docker-compose up -d quay-config
- 登录
账户 quayconfig 密码dalong
- 配置
选择start new
- 配置数据库选项
- 创建管理员账户
- 配置界面
这个是核心,quay 核心组件的启用都是在里边的,为了测试,我只使用了镜像存储以及push pull 的功能,详细配置参考官方文档
效果界面
- 下载配置
解压配置,参考docker-compose 数据卷配置,此时config可以停止了
- 启动部署
docker-compose up -d quay-deploy
- 登录界面
- 创建repo
- 一个gitlab 集成的
常见问题
- 表结构问题
(1074, u"Column length too big for column 'ancestors' (max = 16383); use BLOB or TEXT instead") [SQL: CREATE TABLE image ( id INTEGER NOT NULL AUTO_INCREMENT, docker_image_id VARCHAR(255) NOT NULL, repository_
可以调整编码或者修改下源码,目前测试mysql:5.7.16可以使用,或者直接使用pg
- pg 数据库问题
需要pg_trgm 扩展CREATE EXTENSION IF NOT EXISTS pg_trgm;
- pg 数据库配置提示
token_name
问题
应该算是bug,可以先生成结构,然后使用stop-writing-both 配置阶段在运行,或者多尝试几次(删除表,然后在执行,反正尝试成功了,应该还是有bug)
Database Setup Failed: no such column: token_name
说明
redhat quay 尽管很强大,但是目前看到问题还是有好多,期待可以ga
参考资料
https://github.com/quay/quay
https://hub.docker.com/repository/docker/dalongrong/quay