Fix Docker api issues

This commit is contained in:
Julien Nahum 2024-08-28 17:20:17 +02:00
parent 54e24e2e0f
commit e3eacf1e23
2 changed files with 51 additions and 49 deletions

View File

@ -2,33 +2,30 @@
services:
api: &api
image: jhumanj/opnform-api:latest
environment:
environment: &api-environment # Add this anchor
DB_HOST: db
REDIS_HOST: redis
DB_DATABASE: ${DB_DATABASE:-forge}
DB_USERNAME: ${DB_USERNAME:-forge}
DB_PASSWORD: ${DB_PASSWORD:-forge}
DB_CONNECTION: ${DB_CONNECTION:-pgsql}
AWS_ENDPOINT: http://minio:9000
AWS_ACCESS_KEY_ID: ${MINIO_ACCESS_KEY:-minio}
AWS_SECRET_ACCESS_KEY: ${MINIO_SECRET_KEY:-minio123}
FILESYSTEM_DISK: local
AWS_REGION: eu-west-1
AWS_BUCKET: laravel-bucket
LOCAL_FILESYSTEM_VISIBILITY: public
env_file:
- ./api/.env
volumes:
- ./api/storage:/usr/share/nginx/html/storage
- opnform_storage:/usr/share/nginx/html/storage:rw
api-worker:
<<: *api
command: ./artisan queue:work
image: jhumanj/opnform-api:latest
command: php artisan queue:work
environment:
<<: *api-environment
IS_API_WORKER: "true"
env_file:
- ./api/.env
volumes:
- ./api/storage:/usr/share/nginx/html/storage
- opnform_storage:/usr/share/nginx/html/storage:rw
ui:
image: jhumanj/opnform-client:latest
@ -55,4 +52,5 @@ services:
- 80:80
volumes:
postgres-data:
postgres-data:
opnform_storage:

View File

@ -1,22 +1,52 @@
#!/bin/bash
main() {
prep_file_permissions
prep_storage
wait_for_db
apply_db_migrations
run_init_project
run_server "$@"
}
is_master() {
echo "$@" | grep -q php-fpm
if [ "$IS_API_WORKER" = "true" ]; then
# This is the API worker, skip setup and just run the command
exec "$@"
else
# This is the API service, run full setup
prep_file_permissions
prep_storage
wait_for_db
apply_db_migrations
run_init_project
run_server "$@"
fi
}
prep_file_permissions() {
chmod a+x ./artisan
}
prep_storage() {
# Create Laravel-specific directories
mkdir -p /persist/storage/framework/cache/data
mkdir -p /persist/storage/framework/sessions
mkdir -p /persist/storage/framework/views
# Set permissions for the entire storage directory
chown -R www-data:www-data /persist/storage
chmod -R 775 /persist/storage
# Create symlink to the correct storage location
ln -sf /persist/storage /usr/share/nginx/html/storage
touch /var/log/opnform.log
chown www-data /var/log/opnform.log
# Ensure proper permissions for the storage directory
chown -R www-data:www-data /usr/share/nginx/html/storage
chmod -R 775 /usr/share/nginx/html/storage
}
wait_for_db() {
echo "Waiting for DB to be ready"
until ./artisan migrate:status 2>&1 | grep -q -E "(Migration table not found|Migration name)"; do
sleep 1
done
}
apply_db_migrations() {
echo "Running DB Migrations"
./artisan migrate
@ -27,35 +57,9 @@ run_init_project() {
./artisan app:init-project
}
wait_for_db() {
echo "Waiting for DB to be ready"
until ./artisan migrate:status 2>&1 | grep -q -E "(Migration table not found|Migration name)"; do
sleep 1
done
}
run_server() {
echo "Starting server $@"
/usr/local/bin/docker-php-entrypoint "$@"
}
prep_storage() {
mkdir -p /etc/initial-storage
if [ ! -d /etc/initial-storage/app ]; then
echo "Backing up initial storage directory"
cp -a ./storage/* /etc/initial-storage/
fi
mkdir -p /persist/storage
if [ ! -d /persist/storage/app ]; then
echo "Initialising blank storage dir"
cp -a /etc/initial-storage/* /persist/storage/
fi
chmod -R 777 /persist/storage
touch /var/log/opnform.log
chown www-data /var/log/opnform.log
exec /usr/local/bin/docker-php-entrypoint "$@"
}
main "$@"