fundo
Recentemente, estou desenvolvendo um site de comércio eletrônico baseado em Django e usando o Redis para armazenar em cache as informações do produto. Como uso o Windows para desenvolvimento, o próprio Redis não oferece suporte a sistemas Windows. Existem apenas algumas maneiras de verificar muitas informações. Win10 e acima suportam o subsistema WSL. Considerando que o Github não pode usar a versão mais recente na primeira vez, o próprio WSL é instável e outros fatores, use o Docker para implantar a imagem Rdis para resolver o problema do Windows usando Redis.
Atualização de 30/07/2022
Outro uso do Docker foi descoberto durante o processo de desenvolvimento. Ao criar um novo contêiner de imagem Python no Docker, problemas como a falta de compiladores no ambiente Windows podem ser resolvidos. O uso direto de mapeamento de arquivo e mapeamento de porta pode resolver o problema do ambiente de desenvolvimento Python.Problemas de implantação.
Problemas conhecidos:
- O uso do Docker para implantação de ambiente não pode pular diretamente para o local do erro de código por meio do Pycharm.
- A função de depuração do ponto de interrupção não pode ser usada porque a linha de comando e o Pycharm são separados.
Preparação
- versão mais recente do docker
- Arquivo compactado da versão mais recente do Redis
- Software de controle gráfico Redis RDM
- mercado de espelhos Docker
iniciar implantação
Instalar o Redis
Baixe e instale o Redis diretamente. Após a conclusão da instalação, abra o prompt de comando e use o seguinte código para instalar o Redis. Você também pode usar a interface gráfica para instalar.
#在docker仓库搜索redis
docker search redis
#下载redis到本地仓库不加版本号默认是最新版
docker pull redis
#查看下载好的容器
docker images
Se o download for bem-sucedido, o efeito exibido ao usar o comando é o mostrado na figura
nome do rótulo | significado do rótulo |
---|---|
REPOSITÓRIO | O rótulo indica o nome da imagem atualmente baixada |
MARCAÇÃO | Indica a versão do espelho atual |
ID DA IMAGEM | É o ID definido pelo próprio Docker para a imagem |
CRIADA | Indica quando a imagem foi criada |
TAMANHO | Indica o tamanho da imagem |
Se o conteúdo acima puder ser exibido com sucesso, isso significa que o Redis foi instalado com sucesso. Então, precisamos descompactar o pacote compactado do Redis baixado anteriormente, descompactar o arquivo redis.config e modificá-lo.
Modifique o arquivo de configuração do Redis
No arquivo de configuração padrão do Redis, apenas a conexão local é permitida e, ao mesmo tempo, é executada no modo protegido e a conexão remota não é permitida. No desenvolvimento real, existem muitos inconvenientes e alguns conteúdos do arquivo de configuração precisam ser modificados.
antes de consertar | após a modificação | efeito |
---|---|---|
ligar 127.0.0.1 | ligação 0.0.0.0 | Permitir conexões externas |
modo protegido sim | modo protegido não | Desativar modo protegido |
anexar apenas não | anexar apenas sim | Habilitar persistência |
requer senha " " | requirepass A senha que você precisa definir | configurar senha |
Entre essas configurações, há um # na frente de algumas configurações, e o # pode ser excluído para que a configuração tenha efeito
Iniciar Redis
Após modificar o arquivo de configuração, registre a localização do arquivo de configuração, salvei na área de trabalho, então o caminho é
C:\Users\TOM\Desktop\redis.conf
Em seguida, use este caminho para iniciar o Redis. O código de inicialização específico é o seguinte:
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álise de parâmetros:
nome do parâmetro | efeito |
---|---|
janela de encaixe | Chame o comando docker para iniciar o contêiner |
correr | iniciar um contêiner |
-p 6379:6379 | Mapeie a porta 6379 no contêiner com a porta 6379 do host |
–nome iredis | O contêiner é chamado de iredis |
-v Caminho do arquivo de configuração modificado: caminho de configuração no Docker | Mapeie e substitua o arquivo de configuração local pelo arquivo de configuração no Docker |
-v local persistente caminho do arquivo de salvamento: o caminho persistente padrão no Docker | Substitua o caminho de salvamento persistente |
-d | Execute em segundo plano, você pode excluir este parâmetro se não precisar dele |
redis:mais recente | Execute a imagem cujo TAG é o mais recente na imagem redis |
redis-server /etc/redis/redis.conf | Os parâmetros de inicialização padrão, o arquivo de configuração aqui foi substituído pelo arquivo de configuração na área de trabalho |
–acrescentar apenas sim | Ative o AOF para obter persistência de dados |
O resultado após a inicialização bem-sucedida é mostrado na figura.
Se o parâmetro -d for removido, o resultado da execução será como mostrado na figura:
Até agora, o trabalho de implantação do Redis no contêiner do Docker no Windows foi concluído e a próxima etapa é usar o software RDM para conectar-se ao Django na máquina host.
Conexão remota
banco de dados de conexão RDM
Primeiro instale nosso software RDM e conecte-se após a conclusão da instalação.
Análise de parâmetros
nome do parâmetro | efeito |
---|---|
Nome | Dê um nome ao link atual, basta digitar um que você possa entender |
Hospedar | O IP onde está localizado o Redis, usamos o deploy do Docker local, então preencha o IP da máquina host, o local é 127.0.0.1 ou pode preencher localhost, os dois são equivalentes |
Porta | O número da porta mapeado pelo contêiner do Docker, ou seja, o último número da porta preenchido no parâmetro -p no prompt de comando. Como usamos -p 6379:6379 para demonstração, preencha 6379. Se você mesmo especificar outras portas, preencha na porta que você especificou |
autenticação | Preencha a senha do parâmetro requirepass no arquivo de configuração |
Depois de preencher, clique em Test Connection abaixo para testar o link e clique em OK para salvar a conexão depois que uma página bem-sucedida aparecer.
À esquerda, você pode ver que o banco de dados Redis foi conectado com sucesso.
Django se conecta ao banco de dados
Depois de jogar por um longo tempo, finalmente posso me conectar ao banco de dados. O Django oferece suporte ao uso do Redis para armazenamento em cache. Aqui, precisamos baixar a biblioteca de terceiros correspondente para conectar ao Redis.
# 直接下载 django-redis
pip install django_redis
# 通过豆瓣源加速下载
pip install -i https://pypi.douban.com/simple django_redis
Após a conclusão da instalação, abra o arquivo setting.py no projeto para configuração
# 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"
}
}
}
Depois que a configuração estiver concluída, use o shell que vem com o django para testar
# 启动 Django 自带的命令行
python .\manage.py shell
Teste após o lançamento
# 导入 django-redis 库
from django_redis import get_redis_connection
# 使用 dafult 配置进行连接
con = get_redis_connection('default')
# 测试是否连接成功
con.ping()
# 测试成功结果
>>> con.ping()
True
Docker implanta imagens Python
O Docker extrai a versão da imagem correspondente
# 拉取 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
Conexões para contêineres do Docker
conexão bidirecional
Crie uma rede por meio do comando network do Docker e adicione todos os contêineres à rede. Os contêineres na rede podem ser acessados diretamente por meio do ID do contêiner ou do nome do contêiner. O endereço oficial do documento
# 创建容器网络
docker network create [OPTIONS] NETWORK
docker netword create ContainNetwork
# 将容器加入网络
docker network connect [OPTIONS] NETWORK CONTAINER
dokcer network connect ContainNetwork reids
conexão unidirecional
A conexão única usa o parâmetro --link de configuração anterior do Docker, que pode ser descartado no futuro, preste atenção para usar
# 连接容器A和容器B,只能A访问B,B无法访问A,需在创建容器时就指定需要连接的关系
docker run 容器A --link 容器B
docker run Python_Django --link redis --link mysql # 可单向连接多个容器
Até agora, todo o conteúdo que precisa ser configurado foi concluído. Amigos que precisam de ajuda podem enviar uma mensagem interna ou e-mail para [email protected]. Se você vir, você responderá. Pode não ser oportuno devido ao ocupado trabalho recentemente.