From 8d3d96945b5d1db54b05a84974a3a6976e7649af Mon Sep 17 00:00:00 2001 From: liangliang Date: Fri, 18 Jun 2021 17:07:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0docker=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 26 ++++++++++------------ bin/es-support/Dockerfile | 2 ++ docker-compose.es.yml | 33 +++++++++++++++++++++++++++ docs/docker.md | 47 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 94 insertions(+), 14 deletions(-) create mode 100644 bin/es-support/Dockerfile create mode 100644 docker-compose.es.yml create mode 100644 docs/docker.md diff --git a/README.md b/README.md index 33cac9d..ac4eece 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ - 网站异常邮件提醒,若有未捕捉到的异常会自动发送提醒邮件。 - 集成了微信公众号功能,现在可以使用微信公众号来管理你的vps了。 + ## 安装 mysql客户端从`pymysql`修改成了`mysqlclient`,具体请参考 [pypi](https://pypi.org/project/mysqlclient/) 查看安装前的准备。 @@ -37,19 +38,6 @@ mysql客户端从`pymysql`修改成了`mysqlclient`,具体请参考 [pypi](htt 下载 http://peak.telecommunity.com/dist/ez_setup.py 和 https://raw.github.com/pypa/pip/master/contrib/get-pip.py 这两个文件,双击运行。 -### 配置 -配置都是在 `setting.py` 中,部分配置迁移到了后台配置中。 - -很多 `setting` 配置我都是写在环境变量里面的.并没有提交到 `github` 中来.例如`SECRET_KEY`,`OAHUTH`,`mysql`以及邮件部分的配置等.你可以直接修改代码成你自己的,或者在环境变量里面加入对应的配置就可以了. - -`test`目录中的文件都是为了`travis`自动化测试使用的.不用去关注.或者直接使用.这样就可以集成`travis`自动化测试了. - -`bin`目录是在`linux`环境中使用`Nginx`+`Gunicorn`+`virtualenv`+`supervisor`来部署的脚本和`Nginx`配置文件.可以参考我的文章: - ->[DjangoBlog部署教程](https://www.lylinux.net/article/2019/8/5/58.html) - -有详细的部署介绍. - ## 运行 @@ -109,7 +97,17 @@ CREATE DATABASE `djangoblog` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8 执行: `./manage.py runserver` -浏览器打开: http://127.0.0.1:8000/ 就可以看到效果了。 +浏览器打开: http://127.0.0.1:8000/ 就可以看到效果了。 + +## 服务器部署 + +本地安装部署请参考 [DjangoBlog部署教程](https://www.lylinux.net/article/2019/8/5/58.html) +有详细的部署介绍. + +本项目已经支持使用docker来部署,如果你有docker环境那么可以使用docker来部署,具体请参考:[docker部署](/docs/docker.md) + + + ## 更多配置: [更多配置介绍](/docs/config.md) [集成elasticsearch](/docs/es.md) diff --git a/bin/es-support/Dockerfile b/bin/es-support/Dockerfile new file mode 100644 index 0000000..2e66242 --- /dev/null +++ b/bin/es-support/Dockerfile @@ -0,0 +1,2 @@ +FROM elasticsearch:7.12.1 +RUN /usr/share/elasticsearch/bin/elasticsearch-plugin install -b https://ghproxy.com/https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip diff --git a/docker-compose.es.yml b/docker-compose.es.yml new file mode 100644 index 0000000..2440a65 --- /dev/null +++ b/docker-compose.es.yml @@ -0,0 +1,33 @@ +version: '3' + +services: + es: + build: ./bin/es-support + container_name: es + ports: + - 9200:9200 + + + djangoblog: + build: . + restart: always + command: bash -c 'sh /code/DjangoBlog/bin/docker_start.sh' + ports: + - "8000:8000" + volumes: + - ./collectedstatic:/code/DjangoBlog/collectedstatic + environment: + - DJANGO_MYSQL_DATABASE=djangoblog + - DJANGO_MYSQL_USER=root + - DJANGO_MYSQL_PASSWORD=DjAnGoBlOg!2!Q@W#E + - DJANGO_MYSQL_HOST=db + - DJANGO_MYSQL_PORT=3306 + - DJANGO_MEMCACHED_LOCATION=memcached:11211 + - DJANGO_ELASTICSEARCH_HOST=es:9200 + links: + - db + - memcached + depends_on: + - db + container_name: djangoblog + diff --git a/docs/docker.md b/docs/docker.md new file mode 100644 index 0000000..f99bc6e --- /dev/null +++ b/docs/docker.md @@ -0,0 +1,47 @@ +# 使用docker部署 +使用docker部署支持如下两种方式: +## docker镜像方式 +本项目已经支持了docker部署,如果你已经有了`mysql`,那么直接使用基础镜像即可,启动命令如下所示: +```shell + docker run -d -p 8000:8000 -e DJANGO_MYSQL_HOST=mysqlhost -e DJANGO_MYSQL_PASSWORD=mysqlrootpassword -e DJANGO_MYSQL_USER=root -e DJANGO_MYSQL_DATABASE=djangoblog --name djangoblog liangliangyy/djangoblog +``` +## 使用docker-compose +如果你没有mysql等基础服务,那么可以使用`docker-compose`来运行, +具体命令如下所示: +```shell +docker-compose build +docker-compose up -d +``` +本方式生成的mysql数据文件在 `bin/datas/mysql` 文件夹。 +等启动完成后,访问 [http://127.0.0.1](http://127.0.0.1) 即可。 + +## 配置说明: + +本项目较多配置都基于环境变量,所有的环境变量如下所示: + +| 环境变量名称 | 默认值 | 备注 | +|---------------------------|----------------------------------------------------------------------------|------------------------------------------------------------------------------------------------| +| DJANGO_DEBUG | False | | +| DJANGO_SECRET_KEY | DJANGO_BLOG_CHANGE_ME | 请务必修改,建议[随机生成](https://www.random.org/passwords/?num=5&len=24&format=html&rnd=new) | +| DJANGO_MYSQL_DATABASE | djangoblog | | +| DJANGO_MYSQL_USER | root | | +| DJANGO_MYSQL_PASSWORD | djangoblog_123 | | +| DJANGO_MYSQL_HOST | 127.0.0.1 | | +| DJANGO_MYSQL_PORT | 3306 | | +| DJANGO_MEMCACHED_ENABLE | True | | +| DJANGO_MEMCACHED_LOCATION | 127.0.0.1:11211 | | +| DJANGO_BAIDU_NOTIFY_URL | http://data.zz.baidu.com/urls?site=https://www.example.org&token=CHANGE_ME | 请在[百度站长平台](https://ziyuan.baidu.com/linksubmit/index)获取接口地址 | +| DJANGO_EMAIL_TLS | False | | +| DJANGO_EMAIL_SSL | True | | +| DJANGO_EMAIL_HOST | smtp.example.org | | +| DJANGO_EMAIL_PORT | 465 | | +| DJANGO_EMAIL_USER | SMTP_USER_CHANGE_ME | | +| DJANGO_EMAIL_PASSWORD | SMTP_PASSWORD_CHANGE_ME | | +| DJANGO_ADMIN_EMAIL | admin@example.org | | +| DJANGO_WEROBOT_TOKEN | DJANGO_BLOG_CHANGE_ME +|DJANGO_ELASTICSEARCH_HOST| + +第一次启动之后,使用如下命令来创建超级用户: +```shell +docker exec -it djangoblog python /code/DjangoBlog/manage.py createsuperuser +```