5

我正在尝试创建一个 docker-compose,它建立了一个庞大的 docker 环境,并以 portainer 作为经理。

问题是用户第一次使用“docker-compose up”并且搬运工开始运行时,他必须导航到搬运工网络界面(localhost:9000)并设置管理员用户和密码。

如何自动执行此步骤并使用我定义的默认用户创建一个搬运工,以便当用户第一次导航到搬运工时,管理员用户已经创建。

这是我的 docker-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"
4

5 回答 5

7

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

希望这会帮助你。

于 2018-07-04T12:46:27.570 回答
2

您需要$使用另一个转义散列密码中的每个字符$

$2y$05$ZBq/6oanDzs3iwkhQCxF2uKoJsGXA0SI4jdu1PkFrnsKfpCH5Ae4G

$$2y$$05$$ZBq/6oanDzs3iwkhQCxF2uKoJsGXA0SI4jdu1PkFrnsKfpCH5Ae4G
于 2021-01-16T14:05:00.703 回答
1

您只能为容器的第一次运行设置管理员密码。使用此存储库

于 2021-01-05T09:23:34.613 回答
0

按照 Mohsen 的说法,您必须运行docker-compose down,每次您需要重新启动并初始化一个新的管理员密码时,-v如果您还想删除卷,请使用该选项。

https://github.com/portainer/portainer/issues/1506#issuecomment-352273682

version: '3.3'在后一种情况下,必须在 docker-compose.yml 文件中使用。

于 2021-08-04T13:13:40.210 回答
0

我直接在 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. 放入 Dockerfile 的“CMD”:
# 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

在这里你不需要被$替换$$

于 2021-11-16T16:14:39.337 回答