Как я могу настроить администратора по умолчанию: пароль с помощью docker, если я запускаю docker-compose из docker(в моем случае это portainer)?
Я пытаюсь создать docker-compose, который создает огромную среду докеров с администратором portainer.
Проблема заключается в том, что когда пользователь в первый раз использует "docker-compose" и запускает portainer, он должен перейти к веб-интерфейсу portainer (localhost:9000) и настроить имя пользователя и пароль администратора.
Как я могу автоматизировать этот шаг и создать Portainer с пользователем по умолчанию, которого я определяю, чтобы при первом переходе пользователя к Portainer пользователь с правами администратора уже был создан.
Вот мой докер-compose.yml
version: '3.3'
services:
portainer:
image: portainer/portainer
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./portainer/portainer_data:/data
ports:
- "9000:9000"
5 ответов
Portainer позволяет указать зашифрованный пароль из командной строки для учетной записи администратора. Вам необходимо сгенерировать хэш-значение для пароля.
Например, это хеш-значение пароля - $$2y$$05$$arC5e4UbRPxfR68jaFnAAe1aL7C1U03pqfyQh49/9lB9lqFxLfBqS
В вашем файле docker-compose внесите следующие изменения
version: '3.3'
services:
portainer:
image: portainer/portainer
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./portainer/portainer_data:/data
command: --admin-password "$$2y$$05$$arC5e4UbRPxfR68jaFnAAe1aL7C1U03pqfyQh49/9lB9lqFxLfBqS"
ports:
- "9000:9000"
--admin-password Этот флаг используется для указания зашифрованного пароля в Portainer.
Более подробную информацию можно найти в документации - Portainer
Надеюсь, что это поможет вам.
Вам нужно экранировать каждый символ внутри хешированного пароля другим
$
:
$2y$05$ZBq/6oanDzs3iwkhQCxF2uKoJsGXA0SI4jdu1PkFrnsKfpCH5Ae4G
К
$$2y$$05$$ZBq/6oanDzs3iwkhQCxF2uKoJsGXA0SI4jdu1PkFrnsKfpCH5Ae4G
Вы можете установить пароль администратора ТОЛЬКО при первом запуске контейнера. Используйте этот репозиторий :
Следуя замечанию Мохсена, вы должны бежать
docker-compose down
, каждый раз, когда вам нужно перезапускать и инициализировать новый пароль администратора, с опцией
-v
если вы хотите также удалить тома.
https://github.com/portainer/portainer/issues/1506#issuecomment-352273682
С использованием
version: '3.3'
в файле docker-compose.yml в этом случае является обязательным.
Я установил пароль администратора прямо в Dockerfile!
- Создайте скрипт для генерации пароля:
$ cat <<EOF > portainer-pass.sh
#!/usr/bin/env bash
if [ -z "\$1" ]; then
echo -e "\\nPlease call '\$0 <password>' to run this command!\\n"
exit 1
fi
htpasswd -nb -B admin \$1 | cut -d ":" -f 2
EOF
- Дайте свое разрешение:
chmod u+x portainer-pass.sh
- сгенерируйте свой пароль:
./portainer-pass.sh c7e694055489cb2051195a2be1740992
Выход:
$2y$05$bGljp9ThZkfNaZuKvDUB3uKpXecI5SDZ6s6Xga8azv4JQUDXmHV82
- Вставьте «CMD» Dockerfile:
# Set fixed portainer image
FROM portainer/portainer-ce:latest
# Set default admin password at startup
CMD ["--admin-password", "$2y$05$bGljp9ThZkfNaZuKvDUB3uKpXecI5SDZ6s6Xga8azv4JQUDXmHV82"]
# Default portainer web port
EXPOSE 9443
Здесь вам НЕ нужно заменять
$
к
$$
!