使用Docker搭建Redis容器,在Laravel中进行读写操作
首先
我在Docker上启动了Redis容器并在Laravel中进行了读写操作,因此我将介绍最简单的配置步骤来启动Redis容器。
想做的事情
-
- DockerでRedisコンテナを立ち上げたい
-
- Redisのデータを永続化したい
- LaravelからRedisのデータを読み書きしたい
在这篇文章中未进行解释的内容。
-
- Redis以外のDocker構成
- Laravelのインストール手順
目录结构
.
├── data
│ └── redis
│ └── appendonly.aof(コンテナ起動時に作成されます)
├── docker-file
│ ├── nginx
│ │ └── default.conf
│ └── php
│ ├── Dockerfile
│ └── php.ini
├── volumes
│ └── www
└── docker-compose.yml
每个文件的内容 (gè de
docker-compose.yml 的汉语释义是:Docker 组合配置文件。
为了持久化数据,我们将data文件夹挂载上去。
此外,为了避免每次重启Redis容器都会更改IP地址而不方便,我们使用networks来分配静态IP。
version: '3.3'
services:
php:
container_name: php
build: ./docker-file/php
volumes:
- ./volumes/www:/var/www
networks:
app_net:
ipv4_address: 172.16.238.2
nginx:
image: nginx
container_name: nginx
ports:
- 8080:80
volumes:
- ./volumes/www:/var/www
- ./docker-file/nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
networks:
app_net:
ipv4_address: 172.16.238.3
redis:
image: "redis:latest"
container_name: redis
ports:
- "6379:6379"
command: redis-server --appendonly yes
volumes:
- "./data/redis:/data"
networks:
app_net:
ipv4_address: 172.16.238.4
networks:
app_net:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.16.238.0/24
docker-file/nginx/default.conf 的中文原生語言寫法:
docker 文件夾/nginx/default.conf
server {
listen 80;
root /var/www/public;
index index.php;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
docker文件/php/Dockerfile
因为在PhpRedis PHP扩展中推荐使用公式的建议,所以我正在进行phpredis的git克隆。
建议在Laravel中使用Redis时,使用PECL安装PhpRedis PHP扩展。安装过程较复杂,但对于大量使用Redis的应用程序来说,可以获得更好的性能。
FROM php:7.3-fpm
COPY php.ini /usr/local/etc/php/
RUN apt-get update \
&& apt-get install -y zlib1g-dev libzip-dev libpq-dev iputils-ping net-tools git
RUN git clone https://github.com/phpredis/phpredis.git /usr/src/php/ext/redis
RUN docker-php-ext-install zip pgsql pdo_pgsql redis
COPY --from=composer /usr/bin/composer /usr/bin/composer
ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME /composer
ENV PATH $PATH:/composer/vendor/bin
WORKDIR /var/www
RUN composer global require "laravel/installer"
Dockerfile中的php.ini文件。
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"
执行
使用Docker Compose进行启动。
$ docker-compose up -d
Creating network "redis-docker_app_net" with driver "bridge"
Creating php ... done
Creating redis ... done
Creating nginx ... done
使用Laravel进行读写操作
您需要配置config/database.php,但基本上保持初始设置即可,没有问题。
参考:Redis 6.x Laravel
写入、读取
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Redis;
class RedisController extends Controller
{
/**
* Redisへデータをセット
*/
public function setRedis($id)
{
Redis::set('test', $id);
return;
}
/**
* Redisのデータを取得
*/
public function getRedis()
{
$redis_data = Redis::get('test');
return;
}
}
删除Redis数据
这个命令是参考以下网站的:
参考:删除Redis数据的方法。
$ docker exec -it redis /bin/bash
root@7c462a072597:/data# redis-cli
127.0.0.1:6379> flushdb
OK