我有一个以.p开头的Dockerfile
FROM python:3.7-slim
RUN mkdir -p /usr/share/man/man1mkdir -p /usr/share/man/man1
RUN apt-get update && apt-get install -y openjdk-8-jdk
在本地,这很完美。因此,我将.gitlab-ci.yml文件编写如下:
docker-image:
stage: containerise_requirements
image: docker:19.03.1
tag:
- my-runner
services:
- docker:19.03.1-dind
variables:
DOCKER_TLS_CERTDIR: ""
script:
- docker pull $IMAGENAME:latest || true
- docker build --cache-from $IMAGENAME:latest --tag $IMAGENAME:$CI_COMMIT_SHA --tag $IMAGENAME:latest .
- docker push $IMAGENAME:$CI_COMMIT_SHA
- docker push $IMAGENAME:latest
但是现在,我得到了错误
Sending build context to Docker daemon 1.031MB
Step 1/7 : FROM python:3.7-slim
---> b5a7c089ece3
Step 2/7 : RUN mkdir -p /usr/share/man/man1mkdir -p /usr/share/man/man1
---> Running in 0d90afc1839b
Removing intermediate container 0d90afc1839b
---> b8c22c4288c7
Step 3/7 : RUN apt-get update && apt-get install -y openjdk-8-jdk
---> Running in 1052a5ffb708
Get:1 http://security.debian.org/debian-security buster/updates InRelease [39.1 kB]
Get:2 http://deb.debian.org/debian buster InRelease [122 kB]
Get:3 http://deb.debian.org/debian buster-updates InRelease [49.3 kB]
Get:4 http://security.debian.org/debian-security buster/updates/main amd64 Packages [98.2 kB]
Get:5 http://deb.debian.org/debian buster/main amd64 Packages [7899 kB]
Get:6 http://deb.debian.org/debian buster-updates/main amd64 Packages [5792 B]
Fetched 8212 kB in 2s (4828 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package openjdk-8-jdk
这让我感到惊讶-如果Dockerfile在本地构建,为什么它不在CI期间构建?
答案 0 :(得分:1)
Python:3.7-slim现在基于Debian10。没有这样的软件包openjdk-8-jdk。因此,要么安装openjdk-11-jdk,要么添加sid Repo源。很有可能您的本地Python映像较旧,因此基于较旧的Debian(例如Stretch)。