Skip to content

Commit

Permalink
Fix Docker api issues
Browse files Browse the repository at this point in the history
  • Loading branch information
JhumanJ committed Aug 28, 2024
1 parent 54e24e2 commit e3eacf1
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 48 deletions.
22 changes: 10 additions & 12 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -55,4 +52,5 @@ services:
- 80:80

volumes:
postgres-data:
postgres-data:
opnform_storage:
76 changes: 40 additions & 36 deletions docker/php-fpm-entrypoint
Original file line number Diff line number Diff line change
@@ -1,30 +1,43 @@
#!/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
}

apply_db_migrations() {
echo "Running DB Migrations"
./artisan migrate
}
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

run_init_project() {
echo "Running app:init-project command"
./artisan app:init-project
# 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() {
Expand All @@ -34,28 +47,19 @@ wait_for_db() {
done
}

run_server() {
echo "Starting server $@"
/usr/local/bin/docker-php-entrypoint "$@"
apply_db_migrations() {
echo "Running DB Migrations"
./artisan migrate
}

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
run_init_project() {
echo "Running app:init-project command"
./artisan app:init-project
}

touch /var/log/opnform.log
chown www-data /var/log/opnform.log
run_server() {
echo "Starting server $@"
exec /usr/local/bin/docker-php-entrypoint "$@"
}

main "$@"

0 comments on commit e3eacf1

Please sign in to comment.