Dockerfile отлично работает локально, но не в .gitlab-ci.yml - PullRequest
0 голосов
/ 08 октября 2019

У меня есть 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 создается локально, почемуне будет ли он строиться во время КИ?

1 Ответ

1 голос
/ 08 октября 2019

Python: 3.7-slim теперь основан на Debian 10. Нет такого пакета openjdk-8-jdk. Так что либо установите openjdk-11-jdk, либо добавьте источники sid Repo. Скорее всего, ваш локальный образ Python старше и поэтому основан на более старом Debian (например, Stretch).

...