Fix Docker api issues
This commit is contained in:
parent
54e24e2e0f
commit
e3eacf1e23
|
|
@ -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:
|
||||
|
|
@ -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 "$@"
|
||||
Loading…
Reference in New Issue