基于buildpacks构建Docker镜像

由于天杀的原因,docker镜像现在访问几乎难于登天。
所以我构想了一个方案,就是在香港买一台主机,将所有项目都编译好docker镜像后,推送给阿里云的docker镜像。在阿里云的境内生产环境,只负责从阿里云的docker镜像上拉取image再运行。

本来我是可以直接用dokku等类似heroku的,但是现在境内主机连安装都安装不了了!

现在方案是,先在香港主机上将代码拉回来。假设我们代码是github.com/someguy/something.git:

1
git clone git@github.com:someguy/something.git

接下来我们运行buildpacks来打包:

1
sudo pack build some_app --builder heroku/builder:24

请记得将some_app改成你的app名字。
打包好镜像之后,给这个docker image打个tag:

1
sudo docker tag smartuc2 crpi-ut5s2t2r2fsmvws8.cn-hangzhou.personal.cr.aliyuncs.com/matrix-rails/java:latest

接下来再推送到你的aliyun仓库:

1
sudo docker push crpi-ut5s2t2r2fsmvws8.cn-hangzhou.personal.cr.aliyuncs.com/matrix-rails/java:latest

pack命令的安装

mac上安装

1
brew install buildpacks/tap/pack

在linux上安装:

1
2
(curl -sSL "https://github.com/buildpacks/pack/releases/download/v0.28.0/pack-v0.28.0-linux.tgz" | sudo tar -C /usr/local/bin/ --no-same-owner -xzv pack)

登陆阿里云的docker Registry

请参照 阿里云的容器镜像服务-> 实例列表->镜像仓库 进行。

其他问题

启动的时候报错failed to get platform API version; please set ‘CNB_PLATFORM_API’ to specify the desired platform API version?

1
设置环境变理CNB_PLATFORM_API=0.10 PIDFILE=tmp/rails.pid

sudo docker run -d -p 8857:5000 -e PORT=5000 -e CNB_PLATFORM_API=0.10 -e PIDFILE=tmp/rails.pid crpi-ut5snezdufsmvws8.cn-hangzhou.personal.cr.aliyuncs.com/matrix-rails/java:latest
5ffa125866972f3f4a8d109f0dd0cd76465a147d2526bbe5df22ad8e1769d99d


基于buildpacks构建Docker镜像
https://404.ms/2024/09/20/build-docker-images-with-buildpacks/
作者
rocky.x
发布于
2024年9月21日
许可协议