Как я могу настроить администратора по умолчанию: пароль с помощью 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!

  1. Создайте скрипт для генерации пароля:
      $ 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
  1. Дайте свое разрешение:
      chmod u+x portainer-pass.sh
  1. сгенерируйте свой пароль:
      ./portainer-pass.sh c7e694055489cb2051195a2be1740992

Выход: $2y$05$bGljp9ThZkfNaZuKvDUB3uKpXecI5SDZ6s6Xga8azv4JQUDXmHV82

  1. Вставьте «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

Здесь вам НЕ нужно заменять $к $$!

Другие вопросы по тегам