如何通过migrate/migrate镜像使用GitHub中的SQL文件执行迁移?
问题解决:migrate服务的GitHub源地址格式错误
你的migrate服务command配置的核心问题是GitHub源地址格式不正确——你使用的是GitHub网页的blob链接,而migrate/migrate镜像需要的是能直接读取迁移文件的源路径,而非HTML页面链接。
正确的配置方案
有两种可行的修改方式,任选其一即可:
方式1:使用migrate原生支持的GitHub源协议
migrate工具支持直接通过github://协议访问GitHub仓库的目录,格式为:
github://<用户名>/<仓库名>/<迁移文件目录路径>
修改后的migrate服务command如下:
command: "-source github://guimassoqueto/db-migrations/migrations -database postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:${POSTGRES_PORT}/${POSTGRES_DB}?sslmode=disable -verbose up"
注:如果是私有仓库,需要添加GitHub访问令牌,格式为
github://<token>@<用户名>/<仓库名>/<路径>
方式2:使用GitHub Raw文件目录链接
如果不想用GitHub协议,也可以指向仓库中迁移文件目录的raw内容地址,格式为:
https://raw.githubusercontent.com/<用户名>/<仓库名>/<分支名>/<迁移文件目录>/
修改后的command如下:
command: "-source https://raw.githubusercontent.com/guimassoqueto/db-migrations/main/migrations/ -database postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:${POSTGRES_PORT}/${POSTGRES_DB}?sslmode=disable -verbose up"
额外优化建议
- 移除
links: - postgres配置:在Docker Compose中,同一网络下的容器可以直接通过服务名(postgres)通信,links是旧版语法,无需保留。
验证修改
修改后重新启动服务:
docker-compose up -d migrate
查看migrate容器日志确认迁移执行情况:
docker logs migrate
内容的提问来源于stack exchange,提问作者Guilherme Massoqueto
相关产品推荐
相关产品推荐

