diff --git a/.env.example b/.env.example index c7ebf61..0304c05 100644 --- a/.env.example +++ b/.env.example @@ -52,7 +52,7 @@ QUEUE_CONNECTION=redis CACHE_STORE=redis REDIS_CLIENT=predis -REDIS_HOST=127.0.0.1 +REDIS_HOST=investbrain-redis REDIS_PATH=/tmp/database_server.sock REDIS_PASSWORD=null REDIS_PORT=6379 diff --git a/docker-compose.yml b/docker-compose.yml index f798b97..6ea3f59 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,9 +3,7 @@ networks: driver: bridge services: app: - build: - context: . - dockerfile: docker/Dockerfile + image: investbrainapp/investbrain:latest container_name: investbrain-app restart: unless-stopped tty: true @@ -15,8 +13,18 @@ services: - .:/var/www/app:delegated depends_on: - mysql + - redis networks: - investbrain-network + redis: + image: redis:alpine + container_name: investbrain-redis + restart: unless-stopped + tty: true + networks: + - investbrain-network + volumes: + - investbrain-redis:/data nginx: image: nginx:alpine container_name: investbrain-nginx @@ -46,4 +54,5 @@ services: networks: - investbrain-network volumes: + investbrain-redis: investbrain-mysql: diff --git a/docker/.gitignore b/docker/.gitignore deleted file mode 100644 index f142970..0000000 --- a/docker/.gitignore +++ /dev/null @@ -1 +0,0 @@ -dump.rdb \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile deleted file mode 100644 index f78fece..0000000 --- a/docker/Dockerfile +++ /dev/null @@ -1,47 +0,0 @@ -FROM php:8.3-fpm - -ENV DEBIAN_FRONTEND noninteractive - -# Set the working directory -COPY . /var/www/app -WORKDIR /var/www/app - -# Install common php extension dependencies -RUN apt-get update && apt-get install -y \ - libfreetype-dev \ - libjpeg62-turbo-dev \ - libpng-dev \ - zlib1g-dev \ - libzip-dev \ - unzip \ - libicu-dev \ - git \ - curl \ - redis \ - supervisor \ - && docker-php-ext-configure gd --with-freetype --with-jpeg \ - && docker-php-ext-install -j$(nproc) \ - gd \ - zip \ - pdo_mysql \ - mysqli \ - intl - -# Install Node.js and npm -RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \ - && apt-get install -y nodejs \ - && npm install -g npm@latest - -# Copy over supervisor configuration -COPY ./docker/supervisord.conf /etc/supervisor/conf.d/supervisord.conf - -# Update permissions -RUN chown -R www-data:www-data . \ - && chmod -R 775 ./storage \ - && chmod +x ./docker/entrypoint.sh - -# install composer -COPY --from=composer:2.6.5 /usr/bin/composer /usr/local/bin/composer - -# Run everything else -CMD ["./docker/entrypoint.sh"] diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh old mode 100755 new mode 100644 index 0036cb1..74cbc46 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -9,9 +9,6 @@ if [ ! -f ".env" ]; then cp .env.example .env fi -echo "====================== Checking for updates... ====================== " -/usr/bin/git pull - echo "====================== Installing Composer dependencies... ====================== " /usr/local/bin/composer install @@ -38,7 +35,20 @@ echo "====================== Installing NPM dependencies and building frontend.. /usr/bin/npm run build echo "====================== Running migrations... ====================== " -/usr/local/bin/php artisan migrate --force +run_migrations() { + /usr/local/bin/php artisan migrate --force +} +RETRIES=30 +DELAY=5 +until run_migrations; do + RETRIES=$((RETRIES-1)) + if [ $RETRIES -le 0 ]; then + echo "Database is not ready after multiple attempts. Exiting..." + exit 1 + fi + echo "Waiting for database to be ready... retrying in $DELAY seconds." + sleep $DELAY +done echo "====================== Spinning up Supervisor daemon... ====================== " exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf diff --git a/docker/redis.conf b/docker/redis.conf deleted file mode 100644 index 5991105..0000000 --- a/docker/redis.conf +++ /dev/null @@ -1,2 +0,0 @@ -# Redis RDB and AOF file location -dir /var/www/app/docker \ No newline at end of file diff --git a/docker/supervisord.conf b/docker/supervisord.conf index dff5205..726bff0 100644 --- a/docker/supervisord.conf +++ b/docker/supervisord.conf @@ -11,13 +11,6 @@ autorestart=true stdout_logfile=/var/log/supervisor/php.log stderr_logfile=/var/log/supervisor/php_error.log -[program:redis] -command=redis-server /var/www/app/docker/redis.conf -autostart=true -autorestart=true -stdout_logfile=/var/log/supervisor/redis.log -stderr_logfile=/var/log/supervisor/redis_error.log - [program:scheduler] command=php artisan schedule:work autorestart=true diff --git a/package-lock.json b/package-lock.json index d484e6f..aa7bfdd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "investbrain", + "name": "app", "lockfileVersion": 3, "requires": true, "packages": {