如何与运行中Docker进行命令行交互?


环境说明

Ubuntu 12.*
Docker 1.6

需求如下

用的是Django,有时候 model.py 结构改变后,需要运行如下命令:
python manage.py makemigrations
python manage.py migrate

这2个命令的作用是:当我修改了数据库结构后,检测出来我所做的修改,然后把我的修改同步到数据库,如果我删除。他会提示我,是否删除,或者如果我增加了某个字段,他会提示我,默认值设置为什么。

有时候,这2个命令直接分别执行就可以了,但很多时候,输入这2个命令,还需要我继续输入一些确认是否改变,或者输入默认值【命令行交互】。那么请问这样的情况下,应该如何处理呢?

---------------------------------
难道要我现在我的主机上装一个Django,先把这些改变同步到数据以后,再进入Docker让项目跑起来吗?
已邀请:

wonderflow - 浙大VLIS实验室

赞同来自: dockerlove123


这种情况一般使用 echo 把要交互的指令打进去。

实际上更推荐写一个脚本到Docker里面,然后执行那个脚本处理你要做的交互。

田浩浩 - wizmacau developer

赞同来自: dockerlove123


有没有类似于-y的参数?

xiaolunsanguo - 京东商城-南京研发中心-JDOS团队

赞同来自: dockerlove123


可以这样:
你把容器run起来,cmd是一个驻守程序,例如sshd -D或者python manage.py runserver启动起来。然后使用nsenter工具或者docker exec 进入到容器里,然后运行命令做交互即可。

要回复问题请先登录注册