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]
老楠 :
第二条,用简单命令全清除之重建:docker-compose down --rmi all --volumes
老楠 Reply to 老楠 :
注意如果有共用的Image卷,有可能也会被删除掉,千万不要在生产环境上嘚瑟。
王二麻子 :
try: docker-compose down --volumes
For example, "name@something.com". If someone replies to you it will be via email.
For example, "http://someaddress.com"