项目作者: FrankScarlet

项目描述 :
在docker上的Django项目(及Gunicorn+Nginx+Postgres+Redis),之后会逐步把原有App合进这里。
高级语言: HTML
项目地址: git://github.com/FrankScarlet/django-docker.git
创建时间: 2020-11-18T16:42:53Z
项目社区:https://github.com/FrankScarlet/django-docker

开源协议:

下载


README

常用运维

生成密钥

  1. python3 -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())'

Volume拷贝

从Schedule_bot的Volume拷贝到本地,再从本地拷到Container里

  1. docker cp [src] [des]
  2. docker cp mediafiles/ djangodocker_bot_1:/home/app/web/botfiles/
  3. # 我写错了,拷到web里了,结果权限就乱了....现在那个拷贝的就没法删除掉了(因为已经切换到appuser用户了)
  4. docker cp djangodocker_bot_1:/home/app/web/botfiles ~/botbackup/

数据库备份

  1. # from:
  2. docker exec -t djangodocker_db_1 pg_dumpall -c -U postgres > dump_`date +%d-%m-%Y"_"%H_%M_%S`.sql
  3. # to:
  4. cat dump_`date +%d-%m-%Y"_"%H_%M_%S`.sql | docker exec -i django-docker_db_1 psql -U postgres <

新建应用

  1. docker-compose exec web python manage.py startapp upload
  2. # 这一步为啥会在本地app文件夹里新建一个app啊
  3. # 而且是root权限的...这不合适吧,VS Code都没法编辑了
  4. # 推荐使用虚拟环境来新建,当然不用应该也行
  5. (env) python manage.py startapp upload
  6. # setting.py 临时注释掉用于生成新app
  7. # ALLOWED_HOSTS = os.environ.get("DJANGO_ALLOWED_HOSTS").split(" ")

Todo

  • 增加redis部分

参考资料

  1. bootstrap博客模板

  2. 原有App

  3. Docker部署参考这个博客

  4. postgres-backup

Cheatsheet

启动与停止,可用VS Code(包括查看容器内内容,容器内执行命令)

pre

  1. # 一会儿再补
  2. docker-compose -f docker-compose.pre.yml up -d --build
  3. # 因为变动了数据库
  4. docker-compose -f docker-compose.prod.yml exec web python manage.py migrate --noinput
  5. docker-compose -f docker-compose.prod.yml exec web python manage.py makemigrations
  6. # 由于引入了mdeditor,需要重新收集静态资源
  7. docker-compose -f docker-compose.prod.yml exec web python manage.py collectstatic --no-input --clear

dev

  1. docker-compose up -d --build
  2. docker-compose down
  3. # 可选命令
  4. # entrypoint.sh里其实应该有migrate了
  5. docker-compose exec web python manage.py migrate --noinput
  6. # 在?看看数据库。其实通过docker desktop里的cli访问更方便一点
  7. docker-compose exec db psql --username=postgres --dbname=django_db_dev
  8. # 这个应该是跟nginx配合的,因为这个命令是把静态文件收集到一个固定的地方方便管理
  9. # 顺带一提,搜索的关键词就是static
  10. # 跟STATIC_URL没有关联,后者是绑定静态文件的访问路径/staticfiles/admin.css
  11. docker-compose exec web python manage.py collectstatic --no-input --clear
  12. # 看看volume
  13. docker volume inspect django-docker_postgres_data

prod

  1. docker-compose -f docker-compose.prod.yml up -d --build
  2. docker-compose -f docker-compose.prod.yml exec web python manage.py migrate --noinput
  3. docker-compose -f docker-compose.prod.yml exec web python manage.py collectstatic --no-input --clear
  4. docker-compose -f docker-compose.prod.yml exec web python manage.py createsuperuser
  5. docker-compose -f docker-compose.prod.yml exec db psql --username=postgres
  6. # Bring down the development containers (and the associated volumes with the -v flag)
  7. docker-compose -f docker-compose.prod.yml down
  8. # -v 会把volume去掉的,,,