Docker compose setup to run tests locally.

This commit is contained in:
Kamil Wylegala 2023-10-19 23:20:21 +02:00
parent 98ecc6cfc3
commit 41af03e193
5 changed files with 91 additions and 0 deletions

View file

@ -59,6 +59,7 @@ It means that composer will look at `master` branch of repository configured und
### 2023-10-19
- Removed usage of deprecated `redis->getKeys()` in favor of `redis->keys()`.
- Added docker-compose setup to run tests locally.
### 2023-09-18

54
docker-compose.yml Normal file
View file

@ -0,0 +1,54 @@
services:
web:
build: ./docker/web
environment:
PHP_IDE_CONFIG: "serverName=localhost"
volumes:
- ./:/var/www/html:cached
working_dir: /var/www/html
ports:
- "8000:80"
depends_on:
- mysql
- pgsql
- memcached
- redis
mysql:
image: mysql:5.6
platform: linux/amd64
command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: cakephp_test
MYSQL_USER: cakephp_test
MYSQL_PASSWORD: secret
volumes:
- ./docker/mysql:/docker-entrypoint-initdb.d:cached
- mysql-data:/var/lib/mysql
ports:
- "3306:3306"
pgsql:
image: postgres:9.4
platform: linux/amd64
environment:
POSTGRES_DB: cakephp_test
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
volumes:
- ./docker/pgsql:/docker-entrypoint-initdb.d:cached
- pgsql-data:/var/lib/postgresql/data
ports:
- "5432:5432"
memcached:
image: memcached:latest
hostname: memcached
ports:
- "11211:11211"
redis:
image: "redis:latest"
hostname: redis
ports:
- "6379:6379"
volumes:
mysql-data:
pgsql-data:

View file

@ -0,0 +1,7 @@
CREATE DATABASE IF NOT EXISTS cakephp_test ;
GRANT ALL ON cakephp_test.* TO 'cakephp_test'@'%' ;
CREATE DATABASE IF NOT EXISTS cakephp_test2 ;
GRANT ALL ON cakephp_test2.* TO 'cakephp_test'@'%' ;
CREATE DATABASE IF NOT EXISTS cakephp_test3 ;
GRANT ALL ON cakephp_test3.* TO 'cakephp_test'@'%' ;
FLUSH PRIVILEGES ;

View file

@ -0,0 +1,4 @@
\c cakephp_test
CREATE SCHEMA test2;
CREATE SCHEMA test3;

25
docker/web/Dockerfile Normal file
View file

@ -0,0 +1,25 @@
FROM php:8.2-apache
RUN apt-get update && apt-get install -y --no-install-recommends \
&& apt-get install -y libpq-dev libzip-dev unzip openssl libmcrypt-dev libmemcached-dev locales \
&& rm -rf /var/lib/apt/lists/*
RUN docker-php-ext-install pdo_mysql pdo_pgsql zip \
&& pecl install apcu redis memcached mcrypt xdebug \
&& docker-php-ext-enable redis memcached mcrypt \
&& docker-php-ext-enable xdebug \
&& echo "extension=apcu.so" >> /usr/local/etc/php/php.ini \
&& echo "apc.enable_cli = 1" >> /usr/local/etc/php/php.ini
COPY --from=composer /usr/bin/composer /usr/local/bin/composer
RUN sed -i '/de_DE /s/^# //g' /etc/locale.gen \
&& sed -i '/es_ES /s/^# //g' /etc/locale.gen \
&& locale-gen
ENV APACHE_DOCUMENT_ROOT /var/www/html/app/webroot
RUN a2enmod rewrite
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf