首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头形象不能建立在直播上,但在发展中很好

码头形象不能建立在直播上,但在发展中很好
EN

Stack Overflow用户
提问于 2019-07-19 11:52:23
回答 2查看 243关注 0票数 4

我对码头有个奇怪的问题。

这是所讨论的Dockerfile。

代码语言:javascript
复制
FROM python:2.7

RUN apt-get update && apt-get install -y \
    build-essential \
    python-lxml \
    python-dev \
    python-pip \
    python-cffi \
    libcairo2 \
    libpango1.0-0 \
    libpangocairo-1.0.0 \
    libxml2-dev \
    libxslt1-dev \
    zlib1g-dev \
    libpq-dev \
    libjpeg-dev \
    libgdk-pixbuf2.0-0 \
    libffi-dev \
    mysql-client \
    shared-mime-info

# ... further docker file rules, which doesn't get run cause apt-get fails

我遇到的问题是,在我的开发机器上,这个Dockerfile构建得非常好,但是在我们的实时服务器上,它突然出现故障(在过去使用),使用E: Package 'mysql-client' has no installation candidate

我认为Docker的要点是,所有的东西都使用相同的图像运行,您不应该遇到这样的问题。

为什么会出现这种情况,我如何从这里修复它,使它在dev和live上运行相同?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-19 12:15:00

您正在使用带标记python的图像2.7,但是这个标记是一个“共享”标记,根据码头枢纽上的Python自述的情况,其他时间也在改变:现在python:2.7python:2.7.16python:2共享,但以前可能与python:2.7.15python:2.7.14等共享(换句话说,python:2.7在升级时遵循python:2.7.x )

您的机器和活动服务器可能在不同的时间提取图像,现在有一个标记为2.7的不同图像。“共享”标记似乎类似于latest标记,并且在发布时可能指向更新的图像。

你能做的是:

  • 在生成图像时强制执行图像拉取,即使图像已经出现(使用--pull选项)
  • 使用文档化的简单标记代替,这些应该更一致(如python:2.7.16-alpine3.9)
  • 不要在发布过程中重新构建映像,只构建一次,并在本地和活动环境中使用相同的映像(见下文)。

编辑:这可以通过以下几个方面来证明:

代码语言:javascript
复制
docker images --filter "reference=python" --digests --format "{{.Digest}} {{.Repository}}:{{.Tag}}"
sha256:7a61a96567a2b2ba5db636c83ffa18db584da4024fa5839665e330934cb6b2b2 python:2
sha256:7a61a96567a2b2ba5db636c83ffa18db584da4024fa5839665e330934cb6b2b2 python:2.7
sha256:7a61a96567a2b2ba5db636c83ffa18db584da4024fa5839665e330934cb6b2b2 python:2.7.16
sha256:39224960015b9c0fce12e08037692e8a4be2e940e73a36ed0c86332ce5ce325b python:2.7.15

准确地说:

我认为Docker的要点是,所有的东西都使用相同的图像运行,您不应该遇到这样的问题。 为什么会出现这种情况,我如何从这里修复它,使它在dev和live上运行相同?

是的,推荐的模式是构建一次映像,并在整个发布过程中使用相同的映像--这可以确保您拥有完全相同的上下文(包、代码等)。从开发到生产。您不应该从零开始在活动服务器上重新构建映像,但是最好在开发阶段构建映像,并使用相同的映像进行测试和部署。

票数 5
EN

Stack Overflow用户

发布于 2019-07-19 12:20:07

Python:2.7现在基于。没有mysql客户端apt包,被认为是https://packages.debian.org/search?keywords=mysql-client

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57111967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档