我正在使用fabric在Django的Docker容器中尝试创建超级用户。
为了在Django中创建超级用户,我需要在Django交互模式下运行以下命令:
./manage.py createsuperuser
因为我想在织物脚本中运行它,所以我找到 这个 命令可以避免输入密码。
echo "from django.contrib.auth.models import User; User.objects.create_superuser('admin', 'admin@example.com', 'pass')" | ./manage.py shell
然后我结合使用 "docker exec" 将其在我的 Django 容器中运行。
docker exec container_django echo "from django.contrib.auth.models import User; User.objects.create_superuser('admin', 'admin@example.com', 'pass')" | ./manage.py shell
问题出在Linux管道符号 "|" 上,它将其左侧的所有内容(包括docker exec)传输到其右侧的"./manage.py shell"中。
而这不仅是困难的部分,还需考虑将所有这些杂项放入fabric run中,这意味着它们需要在两端使用引号,这将使整个过程非常丑陋。
fabric run:
run("docker exec container_django {command to create django super user}")
我仍在努力想方设法让垃圾至少能在面料运行时工作,但我不知道该怎么做。