Docker边学边搞记录
为了隔离一台过剩ERP服务器(CentOS, Java)里的环境出来跑Django,试了下Docker, 他娘的众说纷纭。。。太灵活的东西有时候就会这样。
算了,边搞边学试试,非教程,不过好像这个博客除了古时候翻译的几篇,也没有教程。。。
一、尝试通过容器内部的django应用创建超级用户时,报:
Superuser creation skipped due to not running in a TTY. You can run manage.py createsuperuser in your project to create one manually.
解决:
sudo docker exec -it python manage.py createsuperuser, 加上-it参数,因为需要交互。
二、数据卷(Volume)的挂载,如果不是指定宿主机的路径,只写卷名,其实是Docker来管理,映射在Docker自己的文件系统里的,Linux下应该是去/var/lib/docker/volumes/这里面找,可是我的开发环境是Mac,
参考[这里]进入~/Library/Containers/com.docker.docker/Data/vms/0/
看见一个tty设备,screen链接进去,再进入/var/lib/docker/volumes/。妈的原来虚拟出了一个Linux在这里。
退出screen命令:Ctrl+A k
三、新建django app, 前面要加docker-compose run djangoapp(service name),
docker-compose run djangoapp python manage.py startapp myapp
前提是你要把源码目录作为当前目录,并加入djangoapp的Volume
如果有好多条命令要执行,可以先执行docker-compose run djangoapp bash, 后面就不用打前面那一串了,跟Python虚拟环境sourece命令之后一样。
四、如果数据库镜像和程序是分开的,比如qlsql,可以这样进入直接执行命令
docker exec -it [image name] psql -U [user] [db name]