django+vue项目工程构建(留言板)
前期环境配置
1、进入命令行界面,找到一个目录位置,拉取仓库:
git clone https://se.jisuanke.com/course/python38.git
2、拉取完成后进入目录:
cd python38
3、在当前目录构建一个新的docker镜像:
docker build -t "python:38" .
(构建过程中,涉及pip安装的步骤,出现多次 readtime out 的报错,此时单独执行一下pip命令,并给pip更换清华的源即可。)
4、使用镜像来创建一个容器:
docker run -it -p 8000:8000 -v c:\users\lenovo\python38:/code --name python38 python:38
使用-v
来将容器中的文件映射到本地文件,从而可以在本地打开写入,:
前是要映射到的本地文件夹路径,这里需要绝对路径,c:\users\lenovo\python38
文件夹下有Dockerfile
文件。容器的名字叫python38
。
可以检验一下是否挂载成功,即容器中的文件是否同步到了本地:使用touch a
命令在容器中新建一个文件a
, 使用ls
命令,可以看到此时容器中已经多了一个a
文件。再打开一个新的命令行窗口,进入到python38
, 使用dir
命令,看一下文件夹下是否有a
文件,如果有,则说明已经同步。
5、关闭以后再次进入容器的方法:
docker start python38
docker exec -it python38 /bin/bash
6、启动一个数据库服务的实例:
docker run --name mariadb -e MYSQL_ROOT_PASSWORD=root-password -d mariadb
7、先进入数据库服务实例:
docker exec -it mariadb /bin/bash
8、进入数据库shell:
mysql -uroot -proot-password
(用户名是root,密码是root-password)
9、创建一个数据库 api :
create database api default character set utf8 collate utf8_unicode_ci;
创建项目
1、打开一个命令行窗口,将python38
文件夹拷贝一份到一个新的项目文件夹messageboard
:
xcopy python38 messageboard /s /f /h
2、查看一下messageboard
目录下的文件,应该有两个:Dockerfile
和README.md
, 如果还有其它的,可以使用del
命令先删掉:
C:\Users\Lenovo\messageboard>dir
驱动器 C 中的卷没有标签。
卷的序列号是 9694-189D
C:\Users\Lenovo\messageboard 的目录
2020/07/03 18:19 <DIR> .
2020/07/03 18:19 <DIR> ..
2020/06/28 23:51 1,103 Dockerfile
2020/06/28 23:51 546 README.md
2 个文件 1,649 字节
2 个目录 5,330,268,160 可用字节
3、搭建前端
C:\Users\Lenovo\messageboard>vue create frontend
C:\Users\Lenovo\messageboard>cd frontend
C:\Users\Lenovo\messageboard\frontend>npm run serve
先Ctrl C暂停一下,安装要用的 element UI 插件:
C:\Users\Lenovo\messageboard\frontend>npm i element-ui -S
安装axios插件:
C:\Users\Lenovo\messageboard\frontend>npm install axios -S
安装完成后,再重新npm run serve
4、重新开一个命令行窗口,搭建后端:
C:\Users\Lenovo>cd messageboard
创建一个后端文件夹:
C:\Users\Lenovo\messageboard>mkdir backend
查看此时的项目文件夹:
C:\Users\Lenovo\messageboard>dir
驱动器 C 中的卷没有标签。
卷的序列号是 9694-189D
C:\Users\Lenovo\messageboard 的目录
2020/07/03 18:36 <DIR> .
2020/07/03 18:36 <DIR> ..
2020/07/03 18:36 <DIR> backend
2020/06/28 23:51 1,103 Dockerfile
2020/07/03 18:27 <DIR> frontend
2020/06/28 23:51 546 README.md
2 个文件 1,649 字节
4 个目录 5,032,509,440 可用字节
把Dockerfile
文件移动到后端文件夹:
C:\Users\Lenovo\messageboard>move Dockerfile backend
查看一下此时的后端文件夹:
C:\Users\Lenovo\messageboard>cd backend
C:\Users\Lenovo\messageboard\backend>dir
驱动器 C 中的卷没有标签。
卷的序列号是 9694-189D
C:\Users\Lenovo\messageboard\backend 的目录
2020/07/03 18:38 <DIR> .
2020/07/03 18:38 <DIR> ..
2020/06/28 23:51 1,103 Dockerfile
1 个文件 1,103 字节
2 个目录 5,034,713,088 可用字节
进入前期创建过的数据库实例(项目可以共用同一个数据库实例,在实例中新建一个数据库即可):
C:\Users\Lenovo\messageboard\backend>docker exec -it mariadb /bin/bash
create database messageboard default character set utf8 collate utf8_unicode_ci;
查看一下此时实例中的数据库:
MariaDB [(none)]> show databases
-> ;
+--------------------+
| Database |
+--------------------+
| api |
| information_schema |
| messageboard |
| mysql |
| performance_schema |
+--------------------+
5 rows in set (0.000 sec)
退出数据库:
MariaDB [(none)]> exit
使用前期创建好的镜像来创建一个新的Docker容器:
C:\Users\Lenovo\messageboard\backend>docker run -it -p 8001:8001 -v c:\users\lenovo\messageboard\backend:/code --name messageboard python:38
(容器名为messageboard)
进行安装工作:
[root@97d82a39dc2d code]# pipenv install django -i https://pypi.tuna.tsinghua.edu.cn/simple/
[root@97d82a39dc2d code]# pipenv install djangorestframework -i https://pypi.tuna.tsinghua.edu.cn/simple/
[root@97d82a39dc2d code]# pipenv install mysqlclient -i https://pypi.tuna.tsinghua.edu.cn/simple
(使用了清华的源来加速,但是还是会报超时的错误,多装几次就好了)
做到这里就关电脑睡觉去啦~
第二天继续
重新启动并进入容器:
C:\Users\Lenovo\messageboard\backend>docker start messageboard
C:\Users\Lenovo\messageboard\backend>docker exec -it messageboard /bin/bash
进入venv:
[root@97d82a39dc2d code]# pipenv shell
创建项目并进入项目目录:
(code) [root@97d82a39dc2d code]# django-admin startproject api
(code) [root@97d82a39dc2d code]# cd api
在vscode中可以看到现在项目的文件结构:
打开api/settings.py
,修改配置:
在该文件中继续配置数据库:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'USER': 'root',
'PASSWORD': 'root-password',
'NAME': 'messageboard',
'HOST': '172.17.0.4',
'PORT': 3306,
}
}
查看HOST的方法:
C:\Users\Lenovo\messageboard\backend>docker inspect -f "{{ .NetworkSettings.IPAddress }}" mariadb
验证是否配置成功:
(code) [root@97d82a39dc2d api]# ./manage.py migrate
正确输出为:
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying sessions.0001_initial... OK
运行server,并在浏览器访问应用,确保django项目创建成功:
(code) [root@97d82a39dc2d api]# ./manage.py runserver 0:8001
(注意之前在创建容器时设置的对外映射的端口号为8001,这里要统一)
重新打开一个命令行窗口,并进入django项目中:
C:\Users\Lenovo\messageboard\backend>docker exec -it messageboard /bin/bash
[root@97d82a39dc2d api]# pipenv shell
(code) [root@97d82a39dc2d code]# cd api
创建超级管理员账号:
(code) [root@97d82a39dc2d api]# ./manage.py createsuperuser
(记录一下我的用户名和密码 用户名:root 密码:xingchende0)
建一个app:
(code) [root@97d82a39dc2d api]# ./manage.py startapp messageboard
把它加入到配置文件中:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'messageboard',
]