繁体   English   中英

如果我要启动 docker-compose 的 docker(在我的情况下是 portainer),我该如何配置默认的管理员用户:密码与 docker?

[英]how can I configure the default admin user:password with docker if i am launching docker-compose up of a docker(portainer in my case)?

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

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

如何自动执行此步骤并使用我定义的默认用户创建 portainer,以便当用户第一次导航到 portainer 时,已经创建了 admin 用户。

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

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

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

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

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

在后面的情况下,docker-compose.yml 文件中的使用version: '3.3'是强制性的。

我直接在 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

在这里,您不需要将$替换为$$

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM