Я использую Synology KMU NAS. На этом NAS я установил контейнер GitLab Docker, в котором, похоже, есть ошибка. Эта ошибка приводит к тому, что Программное обеспечение отказывается отправлять административные электронные письма без аутентификации. Существует переменная среды SMTP_AUTHENTICATION, которая передается в GitLab, но кажется, что конфигурация без аутентификации (поддерживаемая omnibus-gitlab по словам сопровождающего) не передается правильно и вместо этого возвращается к «Входу».
Поскольку наша центральная ИТ-служба предоставляет только неаутентифицированный SMTP-сервер (по крайней мере, для неличного использования), мне нужно позаботиться об этой проблеме, пока Synology (возможно) не устранит проблему в будущем.
Моя идея - изменить контейнер докеров, чтобы он передавал правильные параметры GitLab. Думаю, ошибка банальна. Однако я никогда раньше не использовал контейнеры Docker.
Есть ли способ изменить контейнер докеров? Что мне нужно сделать?
Вы можете создать свой собственный контейнер, который зависит от контейнера, который вы хотите изменить. Однажды я сделал это с контейнером mariadb, который не запускал кластер galera, потому что двоичный файл, необходимый для теста, находился в неправильном месте в контейнере.
Чтобы создать свой собственный контейнер, вам нужно всего несколько шагов. Я запустил это на хосте, где я хотел запустить контейнер, не уверен, работает ли это на вашем NAS:
Создайте файл с именем Dockerfile
внутри этого каталога
FROM kolla/ubuntu-binary-mariadb:queens
COPY resolveip /usr/sbin/resolveip
CMD ["dumb-init", "--single-child", "--", "kolla_start"]
(FROM
: Изображение, от которого вы хотите унаследовать; COPY
Измененные файлы, которые вы хотите скопировать в изображение; CMD
команда запуска исходного изображения. Вы можете легко найти это, используя docker inspect CONTAINER
.)
Чтобы скопировать файл из контейнера и изменить его, вы можете использовать: $ docker cp CONTAINER:/path/to/file .
Соберите контейнер:
docker build --tag=kolla/ubuntu-binary-mariadb:queens .
Мне нужно было сохранить исходное имя и тег, потому что образ был подготовлен вместе с другими. Поскольку вновь созданный образ был доступен локально и был новее, чем образы в репозитории докеров, он автоматически использовался во время развертывания. Если вам это не нужно, вы можете дать ему свое имя и просто запустить контейнер из этого образа.