提示:Docker 部署django项目(前后端分离,这是后端)
文章目录
创建第一个项目
django-admin startproject DjangoPractice
创建 APP
python manage.py startapp user
配置setting,添加注册app,此处略…
创建后台
python manage.py createsuperuser
迁移数据库表
python manage.py makemigrations
python manage.py migrate
Sh创建docker数据库,注意这里的目录结构
my.cnf的配置
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
performance_schema = OFF
[mysql]
no-auto-rehash
default-character-set=utf8
sh /root/docker/mysql/start.sh
#!/bin/bash
echo "create a mysql container.."
docker run -d --name mysql \
-v $(pwd)/conf.d:/etc/mysql/conf.d \
-v $(pwd)/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD="123456789" \
-e MYSQL_DATABASE="connforflow" \
-p 3307:3306 \
mysql:5.7.19 \
--character-set-server=utf8 --collation-server=utf8_general_ci
简单说明:docker run 为运行容器的命令,若本地仓库不存在mysql:5.7.19的镜像则自动从DockerHub pull下来。
参数: -d, --detach Run container in background and print container ID 分离在后台运行容器并打印容器ID
-v, --volume list Bind mount a volume 卷列表绑定卷
-e, --env list Set environment variables env list设置环境变量
-p, --publish list Publish a container’s port(s) to the host发布列表将容器的端口发布到主机
查看容器,并进行数据库查看
docker ps -a
docker exec -it xxx bash
三. 开始在docker部署和运行如下:
创建prod.py文件:在manage.py同级目录下:
# 生产时环境
import os
pre_path = os.path.dirname(os.path.realpath(__file__))
os.system('python3 {}/manage.py runserver 0.0.0.0:8000'.format(pre_path))
然后使用git将代码上传
git add .
git commit -m 'ok'
git push origin master
在服务器的命令行新建一个文件夹,将包下载在该文件夹中,然后在文件夹下新建Dockerfile文件和requirements.txt文件:
#基于的基础镜像
FROM python:3.8
#代码添加到code文件夹
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
# 安装支持
#RUN pip3 install -i https://pypi.doubanio.com/simple/ -r requirements.txt
ADD . /code/
Run pip3 install -i https://pypi.doubanio.com/simple/ -r requirements.txt
CMD ["python3", "/code/Blog_Server/prod.py"]
新建requirements.txt:或者导出
pip freeze > requirements.txt
或者
altgraph==0.17
amqp==1.4.9
anyjson==0.3.3
argon2-cffi==20.1.0
asgiref==3.3.4
async-generator==1.10
attrs==19.3.0
Automat==20.2.0
backcall==0.2.0
beautiful==0.0.2
billiard==3.3.0.23
bleach==3.3.0
celery==3.1.25
certifi==2019.11.28
cffi==1.14.0
chardet==3.0.4
click==7.1.2
click-didyoumean==0.0.3
click-plugins==1.1.1
click-repl==0.2.0
colorama==0.4.4
constantly==15.1.0
cryptography==2.8
cssselect==1.1.0
cycler==0.10.0
decorator==4.4.2
defusedxml==0.7.1
Django==3.2.4
django-cors-headers==3.7.0
django-email-users==1.1.0
django-ranged-response==0.2.0
django-redis==5.0.0
django-simple-captcha==0.5.13
djangorestframework==3.12.2
docutils==0.17.1
easygui==0.98.1
entrypoints==0.3
environment==1.0.0
et-xmlfile==1.1.0
future==0.18.2
html5lib==1.0.1
hyperlink==19.0.0
idna==2.9
importlib-metadata==4.6.0
incremental==17.5.0
ipykernel==5.5.0
ipython==7.21.0
ipython-genutils==0.2.0
ipywidgets==7.6.3
itsdangerous==1.1.0
jieba==0.42.1
keyring==23.0.1
kiwisolver==1.3.1
kombu==3.0.37
matplot==0.1.9
matplotlib==3.4.2
mutagen==1.40.0
numpy==1.21.0
packaging==20.9
Pillow==8.2.0
pkginfo==1.7.0
prompt-toolkit==3.0.19
py3Fdfs
Pygments==2.9.0
pyloco==0.0.139
PyMySQL==1.0.2
pyparsing==2.4.7
python-dateutil==2.8.1
pytz==2021.1
readme-renderer==29.0
redis==3.5.3
requests==2.25.1
requests-toolbelt==0.9.1
rfc3986==1.5.0
SimpleWebSocketServer==0.1.1
six==1.16.0
sqlparse==0.4.1
tqdm==4.61.1
twine==3.4.1
typing==3.7.4.3
urllib3==1.26.6
ushlex==0.99.1
vine==5.0.0
wcwidth==0.2.5
webencodings==0.5.1
websocket-client==1.1.0
xlwt==1.3.0
zipp==3.4.1
创建镜像django:
docker build -t django .
运行:
docker run -it -p 8000:8000 --name django django
浏览器访问
http://www.ip:8000
未完待续…