Kam*_*cki 6 ruby-on-rails heroku docker
我正在关注这篇文章https://devcenter.heroku.com/articles/container-registry-and-runtime并且我坚持使用"heroku container:push".我运行"heroku容器:push --app mediabox"并正确构建docker镜像,然后开始将其推送到注册表,这就是我得到的:
Successfully built 7926b98d51b5
The push refers to a repository [registry.heroku.com/mediabox/web]
38d48dd6de30: Preparing
969058e6ddc9: Preparing
2f454953e0e7: Preparing
f67c1ecd32a1: Preparing
44fade3982ca: Preparing
0accb1c81980: Waiting
e79bbdfaa0d3: Waiting
1be5d1797b73: Waiting
5c0a4f4b3a35: Waiting
011b303988d2: Waiting
error parsing HTTP 400 response body: unexpected end of JSON input: ""
! Error: docker push exited with 1
Run Code Online (Sandbox Code Playgroud)
这是我的Dockerfile:
FROM ruby:2.3.1-alpine
RUN apk --update --no-cache add build-base less libxml2-dev libxslt-dev nodejs postgresql-dev && mkdir -p /app
WORKDIR /app
COPY Gemfile Gemfile.lock ./
RUN gem install bundler
RUN bundle
COPY . ./
CMD ["script/docker-entrypoint.sh"]
Run Code Online (Sandbox Code Playgroud)
我在这里找不到解决方案.谢谢你的帮助.
当我忘记运行时,我遇到了这个问题heroku container:login
。即使你登录了heroku,heroku容器服务也需要单独登录。这就是为什么您在上传开始时就收到错误的原因 - 您没有获得授权。
首先,正如您链接的文章所述,Heroku 中的 Docker 集成处于测试阶段。它可能仍然存在一些错误。因此,直接联系 Heroku 支持人员可能是个好主意。
假设 Heroku 集成和您的代码都正常,我只能建议您停止使用heroku container:push
并仅使用官方 docker 命令。这可以避免一些推送问题。
您可以使用以下方法在本地构建映像:
docker build .
Run Code Online (Sandbox Code Playgroud)
然后使用以下命令将其推送到 Heroku:
docker tag <image> registry.heroku.com/<app>/<process-type>
docker push registry.heroku.com/<app>/<process-type>
Run Code Online (Sandbox Code Playgroud)
我有基于 Gitlab CI 和 Heroku 使用 Docker 的生产环境。我们所有的集成仅依赖于docker
命令,并且我们在推送本地构建的图像时从未遇到过任何问题。
归档时间: |
|
查看次数: |
2358 次 |
最近记录: |