Пакет CI / CD отличается от локального пакета [несоответствие jessie / stretch] - PullRequest
0 голосов
/ 02 июня 2018

Когда я запускаю docker на локальной машине со следующим Dockerfile :

FROM python:3


WORKDIR /app

COPY . /app

RUN apt-get update && apt-get install -y libhunspell-1.3-0
RUN pip install -r requirements.txt

EXPOSE 9876

CMD ["python","flask_compose.py"]

Он получил libhunspell из следующего репозитория ( jessie ):

Get:1 http://security.debian.org jessie/updates InRelease [94.4 kB]
Ign http://deb.debian.org jessie InRelease
Get:2 http://deb.debian.org jessie-updates InRelease [145 kB]
Get:3 http://security.debian.org jessie/updates/main amd64 Packages [623 kB]
Get:4 http://deb.debian.org jessie Release.gpg [2434 B]
Get:5 http://deb.debian.org jessie Release [148 kB]
Get:6 http://deb.debian.org jessie-updates/main amd64 Packages [23.0 kB]
Get:7 http://deb.debian.org jessie/main amd64 Packages [9064 kB]

И все в порядке (сборка и запуск образа успешно).

К сожалению, когда я запускаю docker в репозитории gitlab с тем же Dockerfile , он вызывает обновлениеapt-get из другого репозитория ( stretch ):

Ign:1 http://deb.debian.org/debian stretch InRelease
Get:2 http://security.debian.org/debian-security stretch/updates InRelease [94.3 kB]
Get:3 http://deb.debian.org/debian stretch-updates InRelease [91.0 kB]
Get:4 http://deb.debian.org/debian stretch Release [118 kB]
Get:5 http://deb.debian.org/debian stretch Release.gpg [2434 B]
Get:6 http://security.debian.org/debian-security stretch/updates/main amd64 Packages [440 kB]
Get:7 http://deb.debian.org/debian stretch-updates/main amd64 Packages [12.1 kB]
Get:8 http://deb.debian.org/debian stretch/main amd64 Packages [9530 kB]

Из-за этого несоответствия Cit / CD gitlab выдает следующее исключение:

E: Unable to locate package libhunspell-1.3-0
E: Couldn't find any package by glob 'libhunspell-1.3-0'
E: Couldn't find any package by regex 'libhunspell-1.3-0'
The command '/bin/sh -c apt-get install -y libhunspell-1.3-0' returned a non-zero code: 100
ERROR: Job failed: exit code 100

Кто-нибудь знает, какизменить мой Dockerfile , чтобы local и gitlab использовали один и тот же репозиторий пакетов?

Ответы [ 2 ]

0 голосов
/ 03 июня 2018

Из официального форума gitlab Я нашел решение, которое решило мою проблему.

1) определил файл setup.sh и следующую команду:

echo "deb http://pkg.adfinis-sygroup.ch/debian/ jessie main non-free contrib" > /etc/apt/sources.list  
echo "deb http://security.debian.org/ jessie/updates main" >> /etc/apt/sources.list  
echo "deb http://pkg.adfinis-sygroup.ch/debian/ jessie-updates main contrib non-free" >> /etc/apt/sources.list

apt-get update  
apt-get install --no-install-recommends -y libhunspell-1.3-0  

2) В Dockerfile добавьте следующие команды:

From python:3
ADD  setup.sh /opt/  
RUN  /bin/bash /opt/setup.sh  

PS : Хотя мой хак работает очень хорошо, я предпочитаю решение @BMitch.

--------------------------------------------------------------------------------------------------------

Расширяя решение @Bmitch, я уменьшаю размер изображения с ~ 600 до ~ 150 с последующим Dockerfile:

FROM python:3-slim-jessie

WORKDIR .

# hunspell deps
RUN apt-get update && apt-get install --no-install-recommends -y libtool libc6-dev gcc g++ build-essential libhunspell-1.3-0

COPY requirements.txt requirements.txt

RUN pip install -r requirements.txt

COPY . .

CMD ["python","flask_compose.py"]
0 голосов
/ 02 июня 2018

Текущий тег для python: 3 точки на растягиваемое изображение Debian.Чтобы обновить локальную среду, запустите docker pull python:3 или запустите сборку с параметром --pull.

Вы также можете выбрать более конкретный тег, чтобы принудительно использовать желаемое базовое изображение, используемое python.См. Страницу docker hub для python, чтобы увидеть все возможные теги, например, python:3-jessie.

...