腾讯云docker服务器从0部署django网站步骤

avatar
作者
筋斗云
阅读量:1

一.查看系统docker 版本 以及已有的镜像列表
docker -v 查看版本

docker images 查看已有的镜像列表

二,安装docker 版 mysql
1.从docker默认服务商拉取mysql 镜像
docker pull mysql 默认拉取最新版本的镜像如需指定版本 docker pull mysql:版本号

2.运行mysql镜像启动一个容器(可以理解为将刚才下载的mysql安装包安装下,容器的概念可以理解成一个虚拟机)
docker run --name mysqlserver --restart=always -v /etc/localtime:/etc/localtime:ro -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d -i -p 3306:3306 mysql
##参数解释:
–name mysqlserver 给将要启动的容器取个叫 mysqlserver
–restart=always 设置重启参数always 的话 服务器重启后这个容器也会跟着启动运行
-v /etc/localtime:/etc/localtime:ro -v 表示容器挂载服务器的文件 这里/etc/localtime表示要容器的时间与服务器保持一致
-v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql 这里是挂载mysql数据库的配置文件目录以及数据存放目录
注意:要是不进行这一步的挂载的话 意味着mysql这个容器运行的数据文件都会在该容器的内部 万一有天容器运行不起来了那就意味着数据库数据可能找不回来了
-e MYSQL_ROOT_PASSWORD=123456 设置mysql本机登录密码
-d 后台运行不输出日志到控制台
-p 3306:3306 映射端口 将本机的3306与容器端口绑定
mysql 指定运行该容器的镜像名称

执行后出现一串长字符表示已安装完成
3.查看容器运行情况
docker ps -a

4.自己电脑访问数据库测试
默认完成上面安装远程机器是无法访问数据库的需要进行远程访问的设置
需开启远程访问
docker exec -it mysqlserver bash 进入mysql容器
###以下命令是在容器内部执行
mysql -uroot -p 登录mysql 输入123456
use mysql;
select host,user from user;
ALTER USER ‘root’@‘%’ IDENTIFIED WITH mysql_native_password BY ‘123456…Wei’; 设置远程登录数据库的密码
flush privileges; 应用上面的改动

exit 退出mysql
exit 退出容器

5.本地使用navicate工具连接数据库并创建一个名为 DataPlant的库

三.将本地代码连接数据库配置改成服务器的

DATABASES = {
‘default’: {
‘ENGINE’: ‘django.db.backends.mysql’,
‘NAME’: ‘2021movie’,
‘HOST’: ‘1.15.80.224’,
‘USER’: ‘root’,
‘PASSWORD’: ‘123456…Wei’,
‘PORT’: 3306,
‘OPTIONS’: {
‘charset’: ‘utf8mb4’,
‘use_unicode’: True, },

} 

}
四.将代码的model生成数据库表(在本地代码控制台输入)
1.python manage.py makemigrations
2.python manage.py migrate
或 将代码中得sql文件直接导入数据库

五.开始服务器上部署网站
1.复制本地代码到服务器目录 使用bitvise远程工具
直接在本地选中代码根目录右键复制然后到工具中进入 /home目录粘贴即可复制代码到服务器上。(我们的代码根目录是 /home/2021movie)

2.docker下载python3.7的环境镜像包
docker pull python:3.7

下载完查看下已有镜像
docker images

3.制作网站运行的镜像包
cd /home/2021movie 进入我们的代码根目录
docker build -t movie . 利用代码根目录下的dockerFile文件开始构建我们的网站镜像包

docker images

4.使用上一步制作的镜像包运行我们的网站
docker run -d -p 8000:8000 --restart=always -v /etc/localtime:/etc/localtime:ro -v /home/2021movie/media:/usr/src/myapp/media --name movie1 movie

##参数解释:
–name movie1 给将要启动的容器取个叫 movie1
–restart=always 设置重启参数always 的话 服务器重启后这个容器也会跟着启动运行
-v /etc/localtime:/etc/localtime:ro -v 表示容器挂载服务器的文件 这里/etc/localtime表示要容器的时间与服务器保持一致
-v /home/2021movie/media:/usr/src/myapp/media 这里是挂载网站的media目录 这个目录会存放我们上传的数据excel文件
注意:要是不进行这一步的挂载的话 意味着movie1这个容器运行的数据文件都会在该容器的内部 万一有天容器运行不起来了那就意味着media文件夹图片可能找不回来了
-d 后台运行不输出日志到控制台
-p 8000:8000 映射端口 将本机的8000与容器端口绑定
movie 指定运行该容器的镜像名称
5.测试网站访问
打开浏览器输入 http://1.15.80.224:8000/

以上部署完成!

六.配置nginx + 域名
1.安装nginx
yum install nginx
2.修改nginx.config 路径: /etc/nginx
在http中插入网站配置

server {

listen 443; server_name mv.weicab.net; ssl on; #ssl证书的pem文件路径 ssl_certificate  /home/sslCard/mv.weicab.net_bundle.pem; #ssl证书的key文件路径 ssl_certificate_key /home/sslCard/mv.weicab.net.key; charset     utf-8; client_max_body_size 750M; open_file_cache max=200000 inactive=20s; open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors on; fastcgi_buffers 256 16k; fastcgi_buffer_size 128k; fastcgi_connect_timeout 86400; fastcgi_send_timeout 86400; fastcgi_read_timeout 86400; reset_timedout_connection on; 

location / {
proxy_pass http://localhost:8000;
}

}
server {
listen 80;
server_name mv.weicab.net;
#将请求转成https
rewrite ^(.*)$ https://$host$1 permanent;
}
3.重启nginx
killall -9 nginx 清除nginx
nginx 启动nginx
https://mv.weicab.net/ 即可访问

七.后面有代码要更新操作步骤:
1.复制代码文件替换服务器上 /home/2021movie
2.停止之前运行的网站容器 docker stop movie1
3.移除之前运行的网站容器 docker rm movie1
4.重新制作新的网站镜像包 跳转到上面的 五.3‍步往下执行部署的操作
其实将代码复制到服务器原代码位置替换后将上面命令合并就是 :
docker stop movie1 && docker rm movie1 && cd /home/2021movie && docker build -t movie . && docker run -d -p 8000:8000 --restart=always -v /etc/localtime:/etc/localtime:ro -v /home/2021movie/media:/usr/src/myapp/media --name movie1 movie

补充打包dockerFile文件说明:

FROM python:3.7 ###基于python3.7的镜像包制作
RUN mkdir /usr/src/myapp -p ###镜像中创建代码存放路径
COPY . /usr/src/myapp ###将当前目录下的文件全部拷贝到镜像中
WORKDIR /usr/src/myapp ###设置镜像中当前工作路径
RUN pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ ###安装代码依赖
WORKDIR /usr/src/myapp
CMD python manage.py runserver 0:8000 ###运行代码

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!