And*_*dre 4 mysql docker dockerfile
Docker有一个奇怪的问题。
这是有问题的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
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,在我的开发机器上,此Dockerfile构建得非常好,但是在我们的活动服务器上,它突然出现了故障(过去工作过)E: Package 'mysql-client' has no installation candidate。
我认为Docker的要点是,所有内容都使用相同的映像运行,并且您不应遇到此类问题。
为什么会这样,我该怎么做才能从这里修复它,以使其在开发人员和现场都能正常运行?
您正在使用的图像python与标签2.7,然而这个标签是“共享”标签按上泊坞枢纽Python的自述正在改变其他时间:现在python:2.7与Python的共享python:2.7.16和python:2但以前它可能与共享python:2.7.15,python:2.7.14等等。(换言之,python:2.7正在python:2.7.x升级中)
您的机器和实时服务器可能在不同的时间提取了图像,现在标记了不同的图像2.7。“共享”标签似乎像latest标签,并且在发布时可能指向较新的图像。
你可以做什么:
docker build与--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
Run Code Online (Sandbox Code Playgroud)
精确地:
我认为Docker的要点是,所有内容都使用相同的映像运行,并且您不应遇到此类问题。
为什么会这样,我该怎么做才能从这里修复它,以使其在开发人员和现场都能正常运行?
是的,并且推荐的模式是一次构建映像,并在整个发行过程中使用相同的映像 -这确保您从开发到生产都具有完全相同的上下文(程序包,代码等)。您不应该在实时服务器上从头开始重新构建映像,而是理想地在开发阶段进行构建,并使用相同的映像进行测试和部署。
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |