added support for legacy tickets
This commit is contained in:
+183
@@ -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
|
||||
````
|
||||
Reference in New Issue
Block a user