Unverified Commit 05ace8cf authored by Yassine Doghri's avatar Yassine Doghri
Browse files

perf(docker): add redis caching service for development

update Dockerfile to include php redis extension
- update development docs
parent d372d674
Loading
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -17,6 +17,10 @@ RUN apt-get update && apt-get install -y \
RUN docker-php-ext-configure gd --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install gd

RUN pecl install -o -f redis \
    &&  rm -rf /tmp/pear \
    &&  docker-php-ext-enable redis

RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli

RUN echo "file_uploads = On\n" \
+12 −0
Original line number Diff line number Diff line
@@ -16,10 +16,21 @@ services:
    volumes:
      - .:/castopod
    depends_on:
      - redis
      - mariadb
    networks:
      - castopod

  redis:
    image: "redis:alpine"
    container_name: "castopod_redis"
    ports:
      - 6379:6379
    volumes:
      - redis:/data
    networks:
      - castopod

  mariadb:
    image: mariadb:latest
    container_name: castopod_mariadb
@@ -69,5 +80,6 @@ services:
      - castopod

volumes:
  redis:
  mariadb:
  phpmyadmin:
+28 −7
Original line number Diff line number Diff line
@@ -36,15 +36,29 @@ git clone https://code.podlibre.org/podlibre/castopod.git
```

2. Create a `.env` file with the minimum required config to connect the app to
   the database:
   the database and use redis as a cache handler:

```ini
CI_ENVIRONMENT="development"

app.baseURL="http://localhost:8080/"
app.mediaBaseURL="http://localhost:8080/"

app.adminGateway="cp-admin"
app.authGateway="cp-auth"

database.default.hostname="mariadb"
database.default.database="castopod"
database.default.username="podlibre"
database.default.password="castopod"

cache.handler="redis"
cache.redis.host = "redis"

# You may not want to use redis as your cache handler
# Comment/remove the two lines above and uncomment
# the next line for file caching.
#cache.handler="file"
```

> _NB._ You can tweak your environment by setting more environment variables in
@@ -99,18 +113,19 @@ docker-compose ps

# Alternatively, you can check all docker processes (you should see composer and npm with an Exited status)
docker ps -a

```

> The `docker-compose up -d` command will boot 3 containers in the background:
> The `docker-compose up -d` command will boot 4 containers in the background:
>
> - `castopod_app`: a php based container with codeigniter requirements
> - `castopod_app`: a php based container with CodeIgniter4 requirements
>   installed
> - `castopod_redis`: a [redis](https://redis.io/) database to handle queries
>   and pages caching
> - `castopod_mariadb`: a [mariadb](https://mariadb.org/) server for persistent
>   data
> - `castopod_phpmyadmin`: a phpmyadmin server to visualize the mariadb database
>
> _NB._ `./mariadb`, `./phpmyadmin` folders will be mounted in the project's
> root directory to persist data and logs.
> - `castopod_phpmyadmin`: a phpmyadmin server to visualize the mariadb
>   database.

## Initialize and populate database

@@ -221,6 +236,12 @@ To see your changes, go to:
# monitor the app container
docker-compose logs --tail 50 --follow --timestamps app

# interact with redis server using included redis-cli command
docker exec -it castopod_redis redis-cli

# monitor the redis container
docker-compose logs --tail 50 --follow --timestamps redis

# monitor the mariadb container
docker-compose logs --tail 50 --follow --timestamps mariadb