我对码头有个奇怪的问题。
这是所讨论的Dockerfile。
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上运行相同?
发布于 2019-07-19 12:15:00
您正在使用带标记python的图像2.7,但是这个标记是一个“共享”标记,根据码头枢纽上的Python自述的情况,其他时间也在改变:现在python:2.7与python:2.7.16和python:2共享,但以前可能与python:2.7.15、python:2.7.14等共享(换句话说,python:2.7在升级时遵循python:2.7.x )
您的机器和活动服务器可能在不同的时间提取图像,现在有一个标记为2.7的不同图像。“共享”标记似乎类似于latest标记,并且在发布时可能指向更新的图像。
你能做的是:
--pull选项)python:2.7.16-alpine3.9)编辑:这可以通过以下几个方面来证明:
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上运行相同?
是的,推荐的模式是构建一次映像,并在整个发布过程中使用相同的映像--这可以确保您拥有完全相同的上下文(包、代码等)。从开发到生产。您不应该从零开始在活动服务器上重新构建映像,但是最好在开发阶段构建映像,并使用相同的映像进行测试和部署。
发布于 2019-07-19 12:20:07
Python:2.7现在基于。没有mysql客户端apt包,被认为是https://packages.debian.org/search?keywords=mysql-client。
https://stackoverflow.com/questions/57111967
复制相似问题