Tabla de contenido
fondo
Recientemente, estoy desarrollando un sitio web de comercio electrónico basado en Django y uso Redis para almacenar en caché la información del producto. Dado que uso Windows para el desarrollo, Redis en sí no es compatible con los sistemas Windows. Solo hay algunas formas de verificar mucha información. Win10 y superiores admiten el subsistema WSL.Teniendo en cuenta que Github no puede usar la última versión la primera vez, WSL en sí mismo es inestable y otros factores, use Docker para implementar la imagen Rdis para resolver el problema de Windows usando Redis.
2022.7.30 Actualización
Se descubrió otro uso de Docker durante el proceso de desarrollo. Al crear un nuevo contenedor de imágenes de Python en Docker, se pueden resolver problemas como la falta de compiladores en el entorno de Windows. El uso directo del mapeo de archivos y el mapeo de puertos puede resolver el problema del entorno de desarrollo de Python Problemas de implementación.
Problemas conocidos:
- El uso de Docker para la implementación del entorno no puede saltar directamente a la ubicación del error de código a través de Pycharm.
- La función de depuración de puntos de interrupción no se puede utilizar porque la línea de comandos y Pycharm están separados.
Preparación
- última versión de la ventana acoplable
- Archivo comprimido de la última versión de Redis
- Software de control gráfico Redis RDM
- Mercado de espejos de Docker
iniciar el despliegue
Instalar Redis
Descargue e instale Redis directamente. Una vez completada la instalación, abra el símbolo del sistema y use el siguiente código para instalar Redis. También puede usar la interfaz gráfica para instalar.
#在docker仓库搜索redis
docker search redis
#下载redis到本地仓库不加版本号默认是最新版
docker pull redis
#查看下载好的容器
docker images
Si la descarga es exitosa, el efecto que se muestra al usar el comando es como se muestra en la figura
Nombre de etiqueta | significado de la etiqueta |
---|---|
REPOSITORIO | La etiqueta indica el nombre de la imagen descargada actualmente |
ETIQUETA | Indica la versión del espejo actual |
ID DE IMAGEN | Es el ID establecido por el propio Docker para la imagen. |
CREADO | Indica cuándo se creó la imagen. |
TAMAÑO | Indica el tamaño de la imagen. |
Si el contenido anterior se puede mostrar con éxito, significa que Redis se ha instalado correctamente. Luego, debemos descomprimir el paquete comprimido de Redis descargado previamente, descomprimir el archivo redis.config y modificarlo.
Modificar el archivo de configuración de Redis
En el archivo de configuración predeterminado de Redis, solo se permite la conexión local y, al mismo tiempo, se ejecuta en modo protegido y no se permite la conexión remota.En el desarrollo real, hay muchos inconvenientes y algunos contenidos del archivo de configuración. necesita ser modificado.
antes de arreglar | después de la modificación | efecto |
---|---|---|
enlazar 127.0.0.1 | enlazar 0.0.0.0 | Permitir conexiones externas |
modo protegido sí | modo protegido no | Deshabilitar el modo protegido |
añadir solo no | solo si | Habilitar persistencia |
requiere pasar " " | requirepass La contraseña que necesita establecer | configurar la clave |
Entre estas configuraciones, hay un # delante de algunas configuraciones, y el # se puede eliminar para que la configuración surta efecto.
Iniciar Redis
Después de modificar el archivo de configuración, registre la ubicación del archivo de configuración, lo guardé en el escritorio, por lo que la ruta es
C:\Usuarios\TOM\Escritorio\redis.conf
A continuación, utilice esta ruta para iniciar Redis. El código de inicio específico es el siguiente:
docker run -p 6379:6379 --name iredis -v C:\Users\TOM\Desktop\redis.conf:/etc/redis/redis.conf -v /home/docker/redis/data:/data -d redis:latest redis-server /etc/redis/redis.conf --appendonly yes
Análisis de parámetros:
nombre del parámetro | efecto |
---|---|
estibador | Llame al comando docker para iniciar el contenedor |
correr | iniciar un contenedor |
-p6379:6379 | Asigne el puerto 6379 en el contenedor con el puerto 6379 del host |
–nombre iredis | El contenedor se llama iredis. |
-v Ruta del archivo de configuración modificada: ruta de configuración en Docker | Asigne y reemplace el archivo de configuración local con el archivo de configuración en Docker |
-v ruta del archivo guardado persistente local: la ruta persistente predeterminada en Docker | Reemplace la ruta de guardado persistente |
-d | Ejecutar en segundo plano, puede eliminar este parámetro si no lo necesita |
redis:último | Ejecute la imagen cuya ETIQUETA sea la última en la imagen redis |
servidor redis /etc/redis/redis.conf | Los parámetros de inicio predeterminados, el archivo de configuración aquí ha sido reemplazado por el archivo de configuración en el escritorio |
–apendonly sí | Active AOF para lograr la persistencia de datos |
El resultado después de un inicio exitoso es como se muestra en la figura.
Si se elimina el parámetro -d, el resultado de la ejecución es como se muestra en la figura:
Hasta ahora, el trabajo de implementación de Redis en el contenedor Docker en Windows se ha completado y el siguiente paso es usar el software RDM para conectarse con Django en la máquina host.
Conección remota
Base de datos de conexión RDM
Primero instale nuestro software RDM y conéctese después de completar la instalación.
Análisis de parámetros
nombre del parámetro | efecto |
---|---|
Nombre | Asigne un nombre al enlace actual, solo ingrese uno que pueda entender |
Anfitrión | La IP donde se encuentra Redis, usamos la implementación local de Docker, así que complete la IP de la máquina host, la local es 127.0.0.1 o puede completar localhost, los dos son equivalentes |
Puerto | El número de puerto asignado por el contenedor de Docker, es decir, el último número de puerto que completó el parámetro -p en el símbolo del sistema. Dado que usamos -p 6379:6379 para la demostración, complete 6379. Si especifica otros puertos usted mismo, complete en el puerto que especificaste |
autenticación | Complete la contraseña del parámetro requirepass en el archivo de configuración |
Después de completar, haga clic en Probar conexión a continuación para probar el enlace y haga clic en Aceptar para guardar la conexión después de que aparezca una página exitosa.
A la izquierda, puede ver que la base de datos de Redis se ha conectado correctamente.
Django se conecta a la base de datos
Después de lanzar durante mucho tiempo, finalmente puedo conectarme a la base de datos. Django admite el uso de Redis para el almacenamiento en caché. Aquí necesitamos descargar la biblioteca de terceros correspondiente para conectarnos a Redis.
# 直接下载 django-redis
pip install django_redis
# 通过豆瓣源加速下载
pip install -i https://pypi.douban.com/simple django_redis
Una vez completada la instalación, abra el archivo setting.py en el proyecto para la configuración
# redis配置
CACHES = {
# 设置名为 default 的链接
"default": {
# 设置缓存功能
"BACKEND": "django_redis.cache.RedisCache",
# 设置 redis 的链接路径
"LOCATION": "redis://default:redis@localhost:6379/0", # 安装redis的主机的 IP 和 端口
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"CONNECTION_POOL_KWARGS": {
"max_connections": 1000,
"encoding": 'utf-8'
},
# 添加 redis 的密码
"PASSWORD": "redis"
}
}
}
Una vez completada la configuración, use el shell que viene con django para probar
# 启动 Django 自带的命令行
python .\manage.py shell
Prueba después del lanzamiento
# 导入 django-redis 库
from django_redis import get_redis_connection
# 使用 dafult 配置进行连接
con = get_redis_connection('default')
# 测试是否连接成功
con.ping()
# 测试成功结果
>>> con.ping()
True
Docker implementa imágenes de Python
Docker extrae la versión de imagen correspondiente
# 拉取 Python38 版本镜像
docker pull rackspacedot/python38
# 查看下载结果
docker ps -a
|CONTAINER ID|IMAGE|COMMAND|CREATED|STATUS|PORTS|NAMES|
|e5cedc7e1e2d|python:3.8|"python3"|21 hours ago|Exited (137)|20 hours ago|
# 新建镜像容器,并配置文件目录映射
docker run -it -p 宿主机端口:容器端口 -v 宿主机目录:容器目录 --name 自定义的名字 镜像名称:镜像tag
docker run -it -p 8080:8080 -v c:\Destop\DjangoCode:/Code --name Python_Django python:3.8
# 启动镜像容器
docker start Python_Django
# 进入容器的交互命令终端
docker exec -it 容器id /bin/bash
docker exec -it e5cedc7e1e2d /bin/bash
Conexiones para contenedores Docker
conexión bidireccional
Cree una red a través del comando de red de Docker y agregue todos los contenedores a la red. Se puede acceder directamente a los contenedores en la red a través de la identificación del contenedor o el nombre del contenedor. La dirección del documento oficial
# 创建容器网络
docker network create [OPTIONS] NETWORK
docker netword create ContainNetwork
# 将容器加入网络
docker network connect [OPTIONS] NETWORK CONTAINER
dokcer network connect ContainNetwork reids
conexión unidireccional
La conexión única utiliza la configuración anterior de Docker --parámetro de enlace, que puede descartarse en el futuro, preste atención al uso
# 连接容器A和容器B,只能A访问B,B无法访问A,需在创建容器时就指定需要连接的关系
docker run 容器A --link 容器B
docker run Python_Django --link redis --link mysql # 可单向连接多个容器
Hasta ahora, se ha completado todo el contenido que debe configurarse. Los amigos que necesiten ayuda pueden enviar un mensaje interno o enviar un correo electrónico a [email protected]. Si lo ve, responderá. Puede que no sea oportuno debido a que está ocupado trabajo recientemente.