diff --git a/.gitignore b/.gitignore index 92d1e443d..2f7d79a71 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ yarn-error.log /.vscode /.npm /.bash_history +/_volumes/* diff --git a/composer.json b/composer.json index 94fa1ffd4..4bb11a1d6 100644 --- a/composer.json +++ b/composer.json @@ -27,6 +27,7 @@ "nunomaduro/collision": "^7.0", "pestphp/pest": "^2.0", "phpunit/phpunit": "^10.0", + "serversideup/spin": "^1.1", "spatie/laravel-ignition": "^2.0" }, "autoload": { diff --git a/composer.lock b/composer.lock index 432cb4ad4..8ac5a9ec2 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "f6c39647206d4c1157c2be1d960de5cc", + "content-hash": "0d98b364229f1e4fe5fff9434f69b49e", "packages": [ { "name": "bacon/bacon-qr-code", @@ -9753,6 +9753,51 @@ ], "time": "2023-02-07T11:34:05+00:00" }, + { + "name": "serversideup/spin", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/serversideup/spin.git", + "reference": "03bb69dbdc6d6a68b82b4bb4cfeb7accc4f8758f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/serversideup/spin/zipball/03bb69dbdc6d6a68b82b4bb4cfeb7accc4f8758f", + "reference": "03bb69dbdc6d6a68b82b4bb4cfeb7accc4f8758f", + "shasum": "" + }, + "bin": [ + "bin/spin" + ], + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0-or-later" + ], + "authors": [ + { + "name": "Dan Pastori", + "homepage": "https://twitter.com/danpastori" + }, + { + "name": "Jay Rogers", + "homepage": "https://twitter.com/jaydrogers" + } + ], + "description": "Replicate your production environment locally using Docker. Just run \"spin up\". It's really that easy.", + "support": { + "issues": "https://github.com/serversideup/spin/issues", + "source": "https://github.com/serversideup/spin/tree/v1.1.0" + }, + "funding": [ + { + "url": "https://github.com/serversideup", + "type": "github" + } + ], + "time": "2022-05-20T15:13:10+00:00" + }, { "name": "spatie/flare-client-php", "version": "1.3.5", diff --git a/docker-compose.dev.yaml b/docker-compose.dev.yaml deleted file mode 100644 index d32d8a13b..000000000 --- a/docker-compose.dev.yaml +++ /dev/null @@ -1,5 +0,0 @@ -version: '3.8' -services: - coolify: - environment: - - PRODUCTION="false" diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml new file mode 100644 index 000000000..05b6745ef --- /dev/null +++ b/docker-compose.dev.yml @@ -0,0 +1,59 @@ +version: '3.8' + +x-testing-host: &testing-host-base + image: coolify-testing-host + build: + dockerfile: Dockerfile + context: ./docker/testing-host + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - ./docker/testing-host/supervisord.conf:/etc/supervisor/conf.d/supervisord.conf + networks: + - coolify + + +services: + coolify: + build: + context: . + dockerfile: ./docker/dev-ssu/Dockerfile + ports: + - "${APP_PORT:-8000}:80" + - "${VITE_PORT:-5173}:${VITE_PORT:-5173}" + environment: + PUID: "${USERID:-1000}" + PGID: "${GROUPID:-1000}" + SSL_MODE: "off" + AUTORUN_LARAVEL_STORAGE_LINK: "false" + AUTORUN_LARAVEL_MIGRATION: "false" + env_file: + - .env + volumes: + - .:/var/www/html/:cached + postgres: + ports: + - "${FORWARD_DB_PORT:-5432}:5432" + env_file: + - .env + environment: + POSTGRES_USER: "${DB_USERNAME}" + POSTGRES_PASSWORD: "${DB_PASSWORD}" + POSTGRES_DB: "${DB_DATABASE}" + POSTGRES_HOST_AUTH_METHOD: "trust" + volumes: + - ./_volumes/database/:/var/lib/postgresql/data + vite: + image: node:19 + working_dir: /var/www/html + volumes: + - .:/var/www/html:cached + command: sh -c "npm install && npm run dev" + testing-host: + <<: *testing-host-base + container_name: coolify-testing-host + testing-host2: + <<: *testing-host-base + container_name: coolify-testing-host-2 + + + diff --git a/docker-compose.prod.yaml b/docker-compose.prod.yaml deleted file mode 100644 index f0f0c7815..000000000 --- a/docker-compose.prod.yaml +++ /dev/null @@ -1,5 +0,0 @@ -version: '3.8' -services: - coolify: - environment: - - PRODUCTION="true" diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml new file mode 100644 index 000000000..9b3757a36 --- /dev/null +++ b/docker-compose.prod.yml @@ -0,0 +1,18 @@ +version: '3.8' +services: + coolify: + build: + context: . + dockerfile: ./docker/prod-ssu/Dockerfile + environment: + AUTORUN_LARAVEL_STORAGE_LINK: "true" + AUTORUN_LARAVEL_MIGRATION: "true" + env_file: + - .env + postgres: + environment: + POSTGRES_USER: "${DB_USERNAME}" + POSTGRES_PASSWORD: "${DB_PASSWORD}" + POSTGRES_DB: "${DB_DATABASE}" + env_file: + - .env diff --git a/docker-compose.yaml b/docker-compose.yaml deleted file mode 100644 index 863d19b71..000000000 --- a/docker-compose.yaml +++ /dev/null @@ -1,6 +0,0 @@ -version: '3.8' -services: - coolify: - image: serversideup/php:8.2-fpm-nginx - postgres: - image: postgres:15-alpine diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..e4b69c004 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,15 @@ +version: '3.8' +services: + coolify: + working_dir: /var/www/html + networks: + - coolify + depends_on: + - postgres + postgres: + image: postgres:15-alpine + networks: + - coolify +networks: + coolify: + driver: bridge diff --git a/docker/dev-ssu/Dockerfile b/docker/dev-ssu/Dockerfile new file mode 100644 index 000000000..3314a40ac --- /dev/null +++ b/docker/dev-ssu/Dockerfile @@ -0,0 +1,8 @@ +FROM serversideup/php:8.2-fpm-nginx +ARG POSTGRES_VERSION=15 +RUN apt-get update && apt-get install -y php-pgsql openssh-client +RUN apt-get -y autoremove \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* + +COPY --chmod=755 docker/dev-ssu/etc/s6-overlay/ /etc/s6-overlay/ diff --git a/docker/dev-ssu/etc/s6-overlay/s6-rc.d/queue-worker/run b/docker/dev-ssu/etc/s6-overlay/s6-rc.d/queue-worker/run new file mode 100644 index 000000000..79fc840ee --- /dev/null +++ b/docker/dev-ssu/etc/s6-overlay/s6-rc.d/queue-worker/run @@ -0,0 +1,2 @@ +#!/command/execlineb -P +su - webuser -c "php /var/www/html/artisan queue:listen --timeout=600 --rest=1 --memory=512" diff --git a/docker/dev-ssu/etc/s6-overlay/s6-rc.d/queue-worker/type b/docker/dev-ssu/etc/s6-overlay/s6-rc.d/queue-worker/type new file mode 100644 index 000000000..5883cff0c --- /dev/null +++ b/docker/dev-ssu/etc/s6-overlay/s6-rc.d/queue-worker/type @@ -0,0 +1 @@ +longrun diff --git a/docker/dev-ssu/etc/s6-overlay/s6-rc.d/user/contents.d/queue-worker b/docker/dev-ssu/etc/s6-overlay/s6-rc.d/user/contents.d/queue-worker new file mode 100644 index 000000000..e69de29bb diff --git a/docker/prod-ssu/Dockerfile b/docker/prod-ssu/Dockerfile new file mode 100644 index 000000000..3314a40ac --- /dev/null +++ b/docker/prod-ssu/Dockerfile @@ -0,0 +1,8 @@ +FROM serversideup/php:8.2-fpm-nginx +ARG POSTGRES_VERSION=15 +RUN apt-get update && apt-get install -y php-pgsql openssh-client +RUN apt-get -y autoremove \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* + +COPY --chmod=755 docker/dev-ssu/etc/s6-overlay/ /etc/s6-overlay/ diff --git a/docker/prod-ssu/s6-rc.d/queue-worker/run b/docker/prod-ssu/s6-rc.d/queue-worker/run new file mode 100644 index 000000000..0029f9615 --- /dev/null +++ b/docker/prod-ssu/s6-rc.d/queue-worker/run @@ -0,0 +1,2 @@ +#!/command/execlineb -P +su - webuser -c "php /var/www/html/artisan queue:listen" diff --git a/docker/prod-ssu/s6-rc.d/queue-worker/type b/docker/prod-ssu/s6-rc.d/queue-worker/type new file mode 100644 index 000000000..5883cff0c --- /dev/null +++ b/docker/prod-ssu/s6-rc.d/queue-worker/type @@ -0,0 +1 @@ +longrun diff --git a/docker/prod-ssu/s6-rc.d/user/contents.d/queue-worker b/docker/prod-ssu/s6-rc.d/user/contents.d/queue-worker new file mode 100644 index 000000000..e69de29bb