如何在Docker Compose中配置JupyterLab的argon哈希密码?
解决JupyterLab Docker Compose配置哈希密码无效的问题
正确的Compose配置写法
直接在command中用数组形式传递参数,并转义哈希值里的$符号(Docker Compose YAML会将$视为变量引用,必须转义):
services: jupyter: container_name: jup image: quay.io/jupyter/scipy-notebook:latest ports: - 8888:8888 restart: unless-stopped environment: - TZ=Australia/Sydney command: - start-notebook.py - --PasswordIdentityProvider.hashed_password=argon2:$$argon2id$$v=19$$m=10240,t=10,p=8$$dRrGNTESTDATAdKLm+YVjQ$$FbTESTDATAG66kyt4vw3/+TjrT5jYtYXhy+v5QX0HY4 volumes: - ./work:/home/joyvan/work
关键注意点
- 参数拆分:
command必须用数组形式,把start-notebook.py和后面的密码参数拆成两个独立元素,不能写成单条字符串(之前的写法错误地将命令和参数混为一个字符串,导致容器无法正确解析)。 - 转义
$符号:哈希值中的所有$都要替换成$$,否则YAML解析器会把$后面的内容当作环境变量,导致哈希值缺失或损坏。 - 无需额外引号:数组形式下直接写参数即可,不需要用单引号或双引号包裹哈希值,避免引入额外的解析问题。
备选方案:使用明文密码自动生成哈希
如果不想手动处理哈希值,可以设置JUPYTER_PASSWORD环境变量(明文),容器启动时会自动将其转换为argon2哈希并保存:
services: jupyter: # ...其他配置不变 environment: - TZ=Australia/Sydney - JUPYTER_PASSWORD=你的明文密码
这种方式无需处理哈希转义,重建容器时密码也会自动生效。
内容的提问来源于stack exchange,提问作者Hugh
相关产品推荐
相关产品推荐

