Код: Выделить всё
FROM ubuntu:latest
WORKDIR /bin
ENV HOSTALIASES="/home/worker/host_aliases"
RUN apt-get update
RUN apt-get install -y apt-transport-https ca-certificates curl gnupg wget inetutils-ping telnet
RUN adduser --disabled-login worker
USER worker
RUN touch /home/worker/host_aliases
RUN echo "kubernetes-server-dev 167.11.11.11" >> /home/worker/host_aliases
- В начале это было альпийское изображение , но я обнаружил, что Alpine использует musl вместо Glibc, поэтому HOSTALIASES здесь не будет работать. Итак, я попробовал несколько разных Debian (тонкий/стабильный) и последнюю версию Ubuntu, но все же смог заставить его работать.
- Я также сделал несколько комбинаций в имени файла псевдонимов хоста на основе информации, которую я нашел в Интернете, например «не использовать . в имени файла».
- Пробовал изменить порядок kubernetes-server-dev 167.11.11.11 на 167.11.11.11 kubernetes-server-dev — это не должно иметь значения, но тем не менее я попробовал.
Я обнаружил, что существует проблема с разрешением имен для IP-адресов в imeges Docker, и было предложение использовать xip.io, например 167.11.11.11.xip.io kubernetes-server-dev, чтобы dns возвращал 167.11.11.11 — всё равно не получилось. - также прочтите, что некоторые инструменты игнорируют ХОСТАЛИЯСЫ, поэтому я пробовал разные, например, curl/ping/telnet/wget
- каждый раз, когда я запускал контейнер, я проверяется, все ли переменные установлены правильно
Код: Выделить всё
curl: (6) Could not resolve host: kubernetes-server-dev
ping: unknown host
Server lookup failure: /kubernetes-server-dev:80, Name or service not known
Во-первых, добавление --add-host во время сборки не добавляет его навсегда (так что, когда я запускаю контейнер, он будет там), во-вторых, все начинается в gitlab runner , поэтому нет запуска Docker, куда я мог бы добавить этот параметр. Единственный вариант — добавить его в бегун, но это повлияет и на другие проекты (это последнее средство).
Единственное решение, которое действительно сработало, — это добавление на этапе развертывания before_script. такой раздел:
Код: Выделить всё
deploy-sth:
stage: deploy
tags:
- docker
image: $IMAGE_STH
before_script:
- echo "$STH_DEV_IP $STH_DEV_HOST" >> /etc/hosts
script: (...)
Также добавление в /etc/hosts< /code> во время сборки также невозможно, потому что docker не позволяет этого, и даже если бы он позволял, docker переопределяет этот файл при запуске образа.
Есть идеи? Буду признателен за любую помощь!
Подробнее здесь: https://stackoverflow.com/questions/788 ... ot-working