added support for legacy tickets

This commit is contained in:
Mark Gregory
2026-09-28 11:26:27 +01:00
parent 0a689bb11f
commit 83d617a0a7
28 changed files with 2803 additions and 2741 deletions
+183
View File
@@ -0,0 +1,183 @@
## Docker Usage for Local Development
This documents hwo to use docker for local development on OSX but can be modified to run under
windows, it uses a multi stage build process and the latest alpine images to keep the container sizes to a minimum.
it fully supports xdebug and a server version of mysql server. This presents a very fast development
experience that does not pollute the host operating system.
### Why I Use Docker
Docker plays a crucial role in my deployment strategy. It allows me to containerize my Laravel applications, ensuring
consistency across different environments and across multiple services that I need to run a production Laravel app -
Queue workers, Schedulers, Nightwatch agent, etc..
1. Consistent Environments: Every deployment maintains the same configurations, reducing bugs and deployment issues.
2. Scalability: Docker’s lightweight containers.
3. The possibility for automated deployment, Integration with Git allows for continuous deployment workflows.
## Docker Compose
1. We assume you have docker installed and running
2. and also docker-compose installed
3. you can also use laravel sail *** the configuration overrides the default sail definitions
```
services:
php-fpm:
build:
context: ./docker/php-fpm
dockerfile: Dockerfile
container_name: laravel-php
working_dir: /var/www/html
volumes:
# ##########################################################
# Source code via bind mount (fast reads on mac:delegated)
# This makes docker much faster
# ##########################################################
- ./:/var/www/html:delegated
# ##########################################################
# Hot paths on named volumes (fast writes, Linux FS)
# This means we have very fast writes as they are not replicated
# to the host file system, this means that they must be recreated
# when built and also you must run composer install as well
# ##########################################################
- vendor:/var/www/html/vendor
- storage:/var/www/html/storage
- cache:/var/www/html/bootstrap/cache
environment:
PHP_OPCACHE_ENABLE: "1"
PHP_OPCACHE_MEMORY: "256"
PHP_FPM_MAX_CHILDREN: "16"
XDEBUG_MODE: "debug,develop"
extra_hosts:
- "host.docker.internal:host-gateway"
expose:
- "9000"
- "9003"
networks:
web:
shared:
aliases: [ api.medidev.vm, nginx, gateway ]
nginx:
image: nginx:alpine
container_name: laravel-nginx
entrypoint: [ "nginx", "-g", "daemon off;" ]
depends_on: [ php-fpm ]
volumes:
- ./:/var/www/html:ro,delegated
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
- ./docker/nginx/logs:/var/log/nginx
- ./docker/nginx/ssl:/etc/nginx/ssl:ro
ports:
- "80:80"
- "443:443"
networks:
web:
shared:
aliases:
- nginx
- gateway
- api.medidev.vm
redis:
image: redis:alpine
container_name: laravel-redis
command: [ "redis-server", "--save", "", "--appendonly", "no", "--loglevel", "warning" ]
ports:
- "6379:6379"
networks: [ web ]
mysql:
image: mysql:9.0
container_name: laravel-mysql
command: [ "mysqld", "--log-error-verbosity=2","--mysqlx=0","--defaults-file=/etc/mysql/conf.d/my.cnf" ]
logging:
driver: "none"
environment:
MYSQL_ROOT_PASSWORD: "987400Kmh"
MYSQL_DATABASE: "AAMEDIUK"
MYSQL_LOG_CONSOLE: "false"
#>/dev/null 2>&1
entrypoint: [ "sh","-lc","exec mysqld --datadir=/var/lib/mysql --user=mysql --mysqlx=0 --log-error-verbosity=2 " ]
ports:
- "3306:3306"
volumes:
- dbdata_medidev:/var/lib/mysql/
# ##########################################################
# Optional custom config / init files:
# ##########################################################
- ./docker/mysql/conf.d:/etc/mysql/conf.d:ro
healthcheck:
test: [ "CMD", "mysqladmin", "ping", "-p987400Kmh" ]
interval: 10s
timeout: 5s
retries: 10
networks: [ web ]
queue:
build:
context: ./docker/php-fpm
dockerfile: Dockerfile
container_name: laravel-queue
command: [ "/usr/bin/supervisord", "-c", "/etc/supervisord.conf" ]
working_dir: /var/www/html
volumes:
- ./:/var/www/html:delegated
- vendor:/var/www/html/vendor
- storage:/var/www/html/storage
- cache:/var/www/html/bootstrap/cache
depends_on:
- redis
- mysql
networks: [ web ]
restart: unless-stopped
networks:
web:
driver: bridge
shared:
external: true
name: shared-frontend
volumes:
vendor:
storage:
cache:
dbdata_medidev:
```
You need to create a docker directory from the project root
and add the following files to this directory once downloaded.
[Download docker.zip](assets/docker.zip){: download}
you will also need to contact the author for a copy of the mysql databases;
Once all the files are in place you can execute
```
sail up --build
or
docker-compose build --no-cache
```
Fix invalid cache path after rebuild as were using names paths
You can also use this command
````
docker exec -it laravel-php bash -lc \
"mkdir -p bootstrap/cache storage/framework/{cache,sessions,views} \
&& chown -R www-data:www-data bootstrap storage \
&& chmod -R ug+rwX bootstrap storage"
`````
NB also run composer install
````
docker network create shared-frontend
````
This makes the necessary cache dirs etc
````
mkdir -p bootstrap/cache storage/framework/{cache,sessions,views,testing,cache/data} && chown -R www-data:www-data bootstrap storage
````