安装Docker指定版本,Docker部署django项目

提示:学习笔记


前言


一、CentOS7安装Docker指定版本

示例:

1、安装依赖

yum install -y yum-utils device-mapper-persistent-data lvm2

2、添加docker软件源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

只保留稳定版本

yum-config-manager --disable docker-ce-edge
yum-config-manager --disable docker-ce-test

3、更新包索引

yum makecache fast

4、查看仓库中所有docker版本

yum list docker-ce --showduplicates|sort -r

在这里插入图片描述

5、 安装指定版本

yum -y install docker-ce-25.0.4-1

已安装,未启动

6、启动

systemctl start docker	# 启动docker	
systemctl enable docker	# 开机自启		
systemctl status docker	# 查看启动状态

正常启动状态
启动状态查看版本

7. 注意:若先更新python2–>python3,需要修改以下文件

问题原因

因为升级python后新建了软连接指向了新版本,除非同时升级yum不然无法使用。需要手动更改报错文件指向python2后即可解决

解决方法

找出python2 	whereis python

在这里插入图片描述

vim /usr/libexec/urlgrabber-ext-down  
	/usr/bin/python --------->  /usr/bin/python2.7 
linux 系统中存在多版本的python. yum 依赖 python 2, 而个人使用 python 3 导致
vim /usr/bin/yum-config-manager
	/usr/bin/python --------->  /usr/bin/python2

二、Docker部署项目流程

1.DockerFile文件(无后缀)

FROM python:3.9
# 设置工作目录
WORKDIR /DjangoProject
# 复制项目文件到镜像中
COPY .  /DjangoProject
# 安装项目依赖   --no-cache-dir 不使用缓存
RUN pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
# RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
# 生成数据库
RUN python manage.py makemigrations && python manage.py migrate
# 对外暴露的端口号
EXPOSE 8000
# 使用 Gunicorn 运行 Django 项目
CMD ["gunicorn", "-c", "/DjangoProject/DjangoProject/gunicorn-config.py", "DjangoProject.wsgi"]
#CMD ["gunicorn", "--bind", "0.0.0.0:8000", "DjangoProject.wsgi"]

注意点1

Docker 镜像的 CentOS 是最小化的,这意味着它只包括运行容器所必需的最小组件。
如果需要一个包含更多预装工具和库的 CentOS 容器环境,可以基于已有的最小化 CentOS 镜像创建一个新的 Dockerfile,并在其中安装所需的额外软件包

# 使用官方最小化 CentOS 镜像
FROM centos:latest
# 安装常用工具
RUN yum -y update && yum clean all && \
    yum -y install wget curl vim && \
    yum clean all

2.gunicorn-config.py文件

项目根目录下创建logs文件夹

from multiprocessing import cpu_count

bind = ["0.0.0.0:8000"]
# daemon = True
pidfile = 'logs/gunicorn.pid'

workers = cpu_count() * 2
worker_class = "gevent"
worker_connections = 65535

keepalive = 600
timeout = 600
graceful_timeout = 600
forwarded_allow_ips = '*'

capture_output = True
loglevel = 'info'
errorlog = 'logs/error.log'
accesslog = 'logs/access.log'

注意点1(daemon = True)

Docker run 之后没反应 什么都没有 日志都没有
使用了daemon = True参数,这个参数是将Guncorn放到后台运行,所以消失了并且没有任何输出。

注意点2(Gunicorn的启动参数不生效)

Gunicorn的默认配置文件名称是gunicorn.conf.py,如果这里面写了内容,直接用参数运行是怎么都不会生效的。

3.项目启动

项目启动之前检查项目数据库ip是否为当前服务器ip

创建镜像

在项目更目录下运行,镜像名称不可大写

docker build -t djangoproject:v1 .

创建容器

docker run -itd --name 容器名 --restart=always -p 外部端口:容器内部端口 -v 外部挂载文件路径:容器内的挂载文件路径 镜像名 启动容器
-d :后台
-it:详细信息
–name:给容器取名
–restart=always 自启
-p:暴露端口
-v:挂载文件,持久化

# 项目目录下使用.	不在项目目录下时使用绝对路径
docker run -itd --name technology -p 9877:9877 --restart=always -v .:/DjangoProject djangoproject:v1

docker start 容器id 启动容器
docker stop 容器id 停止容器
docker restart 容器id 重新启动
docker rm -f 容器id 强制删除容器
docker rmi 镜像名 删除镜像
docker exec -it 容器id bash 进入容器的工作目录
docker exec -it 容器id 执行命令 进入容器执行命令


三、Docker安装指定版本的mariadb

1.查询mariadb

docker search mariadb

2.拉取mariadb数据库

docker pull mariadb:10.6.15  

3.启动数据库

启动mariadb容器(设置密码,文件挂载)

docker run --name mariadb -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -v /data/docker/mariadb:/var/lib/maradb -d mariadb:10.6.15

4.开启远程访问

进入数据库 	
docker exec -it 容器id bash  	
设置某IP地址的某用户通过密码远程访问某库.表  	
grant all privileges on 库名.表名 to '用户名'@'IP地址' identified by '密码' with grant option; 	
当前mariadb的所有库 	
grant all privileges on *.* to 'root'@'%'  identified by '123' with grant option; 	
立即生效 	
flush privileges;

其他方法:

1.更改 mysql 数据库里的 user 表里的 host 项,从localhost"改成%实现用户远程登录
select host,user from user where user=‘root’;
update user set host = ‘%’ where user=‘root’ and host=‘localhost’;
select host, user from user where user=‘root’;
.
2.先创建远程用户,再授权
create user ‘root’@‘%’ identified by ‘123’;
grant all privileges on . to ‘root’@‘%’ with grant option;
flush privileges;


总结


  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 Docker Compose 来部署 Django 项目,以下是一些简单的步骤: 1. 创建一个 Dockerfile 文件,指定基础镜像和项目文件的拷贝方式。例如: ``` FROM python:3.8 ENV PYTHONUNBUFFERED 1 RUN mkdir /code WORKDIR /code COPY requirements.txt /code/ RUN pip install -r requirements.txt COPY . /code/ ``` 2. 创建一个 docker-compose.yml 文件,定义服务和它们的配置。例如: ``` version: '3' services: db: image: postgres environment: POSTGRES_DB: myproject POSTGRES_USER: myprojectuser POSTGRES_PASSWORD: myprojectpassword web: build: . command: python manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8000:8000" depends_on: - db ``` 在这个例子中,我们定义了两个服务:一个是数据库服务,另一个是 Django Web 服务。我们使用 Postgres 镜像来作为数据库,并且指定了环境变量来设置数据库的名字、用户名和密码。在 Web 服务中,我们指定Dockerfile 的路径,以及运行 Django 服务器的命令和端口映射。同时,我们还指定了这个服务依赖于数据库服务。 3. 运行 docker-compose 命令来启动服务。例如: ``` docker-compose up ``` 这个命令会自动构建镜像、创建容器并启动服务。你可以在浏览器中访问 `http://localhost:8000` 来查看 Django 项目。 这只是一个简单的例子,你可能需要根据自己的项目结构和需求来做一些调整。但是,使用 Docker Compose 部署 Django 项目可以简化部署流程,并且可以方便地在不同环境中部署和迁移。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值