diff --git a/.github/workflows/action_update-dockerhub-readme.yml b/.github/workflows/action_update-dockerhub-readme.yml index 904e195b6..b7ebb6c98 100644 --- a/.github/workflows/action_update-dockerhub-readme.yml +++ b/.github/workflows/action_update-dockerhub-readme.yml @@ -14,7 +14,7 @@ jobs: name: Push README to Docker Hub steps: - name: git checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: main diff --git a/.github/workflows/scheduled-task_update-sponsors.yml b/.github/workflows/scheduled-task_update-sponsors.yml index c76e90246..6461482da 100644 --- a/.github/workflows/scheduled-task_update-sponsors.yml +++ b/.github/workflows/scheduled-task_update-sponsors.yml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-24.04 steps: - name: Checkout đŸ›Žī¸ - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Generate Sponsors 💖 uses: JamesIves/github-sponsors-readme-action@v1 diff --git a/.github/workflows/service_docker-build-and-publish.yml b/.github/workflows/service_docker-build-and-publish.yml index 6296f8d41..dbd4d7fa5 100644 --- a/.github/workflows/service_docker-build-and-publish.yml +++ b/.github/workflows/service_docker-build-and-publish.yml @@ -15,10 +15,6 @@ on: type: string default: 'scripts/conf/php-versions.yml' description: 'The path to the PHP versions file.' - default-image-variation: - type: string - default: 'cli' - description: 'The default PHP variation to use for the Docker image.' registry-repositories: type: string required: true @@ -43,7 +39,7 @@ jobs: php-version-map-json: ${{ steps.get-php-versions.outputs.php-version-map-json }} steps: - name: Check out code - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: ${{ inputs.ref }} @@ -84,12 +80,12 @@ jobs: steps: - name: Check out code. - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: ${{ inputs.ref }} - name: Download PHP Versions file - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: name: php-versions.yml path: ./artifacts @@ -127,7 +123,6 @@ jobs: ./scripts/assemble-docker-tags.sh env: PHP_VERSIONS_FILE: "${{ inputs.php-versions-file }}" - DEFAULT_IMAGE_VARIATION: ${{ inputs.default-image-variation }} PHP_BUILD_VERSION: ${{ matrix.patch_version }} PHP_BUILD_VARIATION: ${{ matrix.php_variation }} PHP_BUILD_BASE_OS: ${{ matrix.base_os }} diff --git a/.gitignore b/.gitignore index cbc1be6a1..c3f34b862 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ package.json yarn.lock node_modules php-versions.yml -*.tmp \ No newline at end of file +*.tmp +/docs/_OLD_ \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..9793d85bf --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "search.exclude": { + "**/.nuxt": true, + "**/node_modules": true, + "**/dist": true + } +} \ No newline at end of file diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 000000000..e869b89bd --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,24 @@ +You are a highly skilled PHP system administrator tasked with maintaining open source PHP Docker images for Laravel applications. Your goal is to assist in creating production-ready Docker images that follow best practices for security, performance, and developer experience using the guidelines below. + +1. Skills you posses deep knowledge and best practices of: + - Docker + - PHP + - Laravel + - GitHub Actions + - Shell scripting + - S6 Overlay + - Nginx + - Apache + - NGINX Unit + - PHP-FPM + +2. Development Guidelines: + + - Follow the best practices for security, performance, and developer experience. + - Write clean, maintainable and technically accurate code. + - All entrypoint scripts for the Docker images must be POSIX compliant and able to be executed with /bin/sh. + - Any /bin/sh scripts must be compatible with Debian and Alpine Linux. + - For any /bin/bash scripts, these should work with MacOS, Linux, and WSL2. + - Never use an approach you're not confident about. If you're unsure about something, ask for clarity. + +This project is open source and the code is available on GitHub, so be sure to follow best practices to make it easy for others to understand, modify, and contribute to the project. \ No newline at end of file diff --git a/README.md b/README.md index f37f06d2b..abde11f74 100644 --- a/README.md +++ b/README.md @@ -53,13 +53,14 @@ serversideup/php:8.2-fpm-nginx > [!NOTE] > All our images are available on [**Docker Hub**](https://hub.docker.com/r/serversideup/php/) and [**GitHub Packages**](https://github.com/serversideup/docker-php/pkgs/container/php). đŸĨŗ -| âš™ī¸ Variation | 🚀 Version | -| -------------- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| cli | **Debian Based**
[![serversideup/php:8.4-cli](https://img.shields.io/docker/image-size/serversideup/php/8.4-cli?label=serversideup%2Fphp%3A8.4-cli)](https://hub.docker.com/r/serversideup/php/tags?name=8.4-cli&page=1&ordering=-name)
[![serversideup/php:8.3-cli](https://img.shields.io/docker/image-size/serversideup/php/8.3-cli?label=serversideup%2Fphp%3A8.3-cli)](https://hub.docker.com/r/serversideup/php/tags?name=8.3-cli&page=1&ordering=-name)
[![serversideup/php:8.2-cli](https://img.shields.io/docker/image-size/serversideup/php/8.2-cli?label=serversideup%2Fphp%3A8.2-cli)](https://hub.docker.com/r/serversideup/php/tags?name=8.2-cli&page=1&ordering=-name)
[![serversideup/php:8.1-cli](https://img.shields.io/docker/image-size/serversideup/php/8.1-cli?label=serversideup%2Fphp%3A8.1-cli)](https://hub.docker.com/r/serversideup/php/tags?name=8.1-cli&page=1&ordering=-name)
[![serversideup/php:8.0-cli](https://img.shields.io/docker/image-size/serversideup/php/8.0-cli?label=serversideup%2Fphp%3A8.0-cli)](https://hub.docker.com/r/serversideup/php/tags?name=8.0-cli&page=1&ordering=-name)
[![serversideup/php:7.4-cli](https://img.shields.io/docker/image-size/serversideup/php/7.4-cli?label=serversideup%2Fphp%3A7.4-cli)](https://hub.docker.com/r/serversideup/php/tags?name=7.4-cli&page=1&ordering=-name)
**Alpine Based**
[![serversideup/php:8.4-cli-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.4-cli-alpine?label=serversideup%2Fphp%3A8.4-cli-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.4-cli-alpine&page=1&ordering=-name)
[![serversideup/php:8.3-cli-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.3-cli-alpine?label=serversideup%2Fphp%3A8.3-cli-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.3-cli&page=1&ordering=-name)
[![serversideup/php:8.2-cli-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.2-cli-alpine?label=serversideup%2Fphp%3A8.2-cli-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.2-cli-alpine&page=1&ordering=-name)
[![serversideup/php:8.1-cli-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.1-cli-alpine?label=serversideup%2Fphp%3A8.1-cli-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.1-cli-alpine&page=1&ordering=-name)
[![serversideup/php:8.0-cli-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.0-cli-alpine?label=serversideup%2Fphp%3A8.0-cli-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.0-cli-alpine&page=1&ordering=-name)
[![serversideup/php:7.4-cli-alpine](https://img.shields.io/docker/image-size/serversideup/php/7.4-cli-alpine?label=serversideup%2Fphp%3A7.4-cli-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=7.4-cli-alpine&page=1&ordering=-name) | -| fpm | **Debian Based**
[![serversideup/php:8.4-fpm](https://img.shields.io/docker/image-size/serversideup/php/8.4-fpm?label=serversideup%2Fphp%3A8.4-fpm)](https://hub.docker.com/r/serversideup/php/tags?name=8.4-fpm&page=1&ordering=-name)
[![serversideup/php:8.3-fpm](https://img.shields.io/docker/image-size/serversideup/php/8.3-fpm?label=serversideup%2Fphp%3A8.3-fpm)](https://hub.docker.com/r/serversideup/php/tags?name=8.3-fpm&page=1&ordering=-name)
[![serversideup/php:8.2-fpm](https://img.shields.io/docker/image-size/serversideup/php/8.2-fpm?label=serversideup%2Fphp%3A8.2-fpm)](https://hub.docker.com/r/serversideup/php/tags?name=8.2-fpm&page=1&ordering=-name)
[![serversideup/php:8.1-fpm](https://img.shields.io/docker/image-size/serversideup/php/8.1-fpm?label=serversideup%2Fphp%3A8.1-fpm)](https://hub.docker.com/r/serversideup/php/tags?name=8.1-fpm&page=1&ordering=-name)
[![serversideup/php:8.0-fpm](https://img.shields.io/docker/image-size/serversideup/php/8.0-fpm?label=serversideup%2Fphp%3A8.0-fpm)](https://hub.docker.com/r/serversideup/php/tags?name=8.0-fpm&page=1&ordering=-name)
[![serversideup/php:7.4-fpm](https://img.shields.io/docker/image-size/serversideup/php/7.4-fpm?label=serversideup%2Fphp%3A7.4-fpm)](https://hub.docker.com/r/serversideup/php/tags?name=7.4-fpm&page=1&ordering=-name)
**Alpine Based**
[![serversideup/php:8.4-fpm-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.4-fpm-alpine?label=serversideup%2Fphp%3A8.4-fpm-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.4-fpm-alpine&page=1&ordering=-name)
[![serversideup/php:8.3-fpm-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.3-fpm-alpine?label=serversideup%2Fphp%3A8.3-fpm-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.3-fpm-alpine&page=1&ordering=-name)
[![serversideup/php:8.2-fpm-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.2-fpm-alpine?label=serversideup%2Fphp%3A8.2-fpm-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.2-fpm-alpine&page=1&ordering=-name)
[![serversideup/php:8.1-fpm-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.1-fpm-alpine?label=serversideup%2Fphp%3A8.1-fpm-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.1-fpm-alpine&page=1&ordering=-name)
[![serversideup/php:8.0-fpm-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.0-fpm-alpine?label=serversideup%2Fphp%3A8.0-fpm-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.0-fpm-alpine&page=1&ordering=-name)
[![serversideup/php:7.4-fpm-alpine](https://img.shields.io/docker/image-size/serversideup/php/7.4-fpm-alpine?label=serversideup%2Fphp%3A7.4-fpm-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=7.4-fpm-alpine&page=1&ordering=-name) | -| fpm-apache | **Debian Based**
[![serversideup/php:8.4-fpm-apache](https://img.shields.io/docker/image-size/serversideup/php/8.4-fpm-apache?label=serversideup%2Fphp%3A8.4-fpm-apache)](https://hub.docker.com/r/serversideup/php/tags?name=8.4-fpm-apache&page=1&ordering=-name)
[![serversideup/php:8.3-fpm-apache](https://img.shields.io/docker/image-size/serversideup/php/8.3-fpm-apache?label=serversideup%2Fphp%3A8.3-fpm-apache)](https://hub.docker.com/r/serversideup/php/tags?name=8.3-fpm-apache&page=1&ordering=-name)
[![serversideup/php:8.2-fpm-apache](https://img.shields.io/docker/image-size/serversideup/php/8.2-fpm-apache?label=serversideup%2Fphp%3A8.2-fpm-apache)](https://hub.docker.com/r/serversideup/php/tags?name=8.2-fpm-apache&page=1&ordering=-name)
[![serversideup/php:8.1-fpm-apache](https://img.shields.io/docker/image-size/serversideup/php/8.1-fpm-apache?label=serversideup%2Fphp%3A8.1-fpm-apache)](https://hub.docker.com/r/serversideup/php/tags?name=8.1-fpm-apache&page=1&ordering=-name)
[![serversideup/php:8.0-fpm-apache](https://img.shields.io/docker/image-size/serversideup/php/8.0-fpm-apache?label=serversideup%2Fphp%3A8.0-fpm-apache)](https://hub.docker.com/r/serversideup/php/tags?name=8.0-fpm-apache&page=1&ordering=-name)
[![serversideup/php:7.4-fpm-apache](https://img.shields.io/docker/image-size/serversideup/php/7.4-fpm-apache?label=serversideup%2Fphp%3A7.4-fpm-apache)](https://hub.docker.com/r/serversideup/php/tags?name=7.4-fpm-apache&page=1&ordering=-name) | -| fpm-nginx | **Debian Based**
[![serversideup/php:8.4-fpm-nginx](https://img.shields.io/docker/image-size/serversideup/php/8.4-fpm-nginx?label=serversideup%2Fphp%3A8.4-fpm-nginx)](https://hub.docker.com/r/serversideup/php/tags?name=8.4-fpm-nginx&page=1&ordering=-name)
[![serversideup/php:8.3-fpm-nginx](https://img.shields.io/docker/image-size/serversideup/php/8.3-fpm-nginx?label=serversideup%2Fphp%3A8.3-fpm-nginx)](https://hub.docker.com/r/serversideup/php/tags?name=8.3-fpm-nginx&page=1&ordering=-name)
[![serversideup/php:8.2-fpm-nginx](https://img.shields.io/docker/image-size/serversideup/php/8.2-fpm-nginx?label=serversideup%2Fphp%3A8.2-fpm-nginx)](https://hub.docker.com/r/serversideup/php/tags?name=8.2-fpm-nginx&page=1&ordering=-name)
[![serversideup/php:8.1-fpm-nginx](https://img.shields.io/docker/image-size/serversideup/php/8.1-fpm-nginx?label=serversideup%2Fphp%3A8.1-fpm-nginx)](https://hub.docker.com/r/serversideup/php/tags?name=8.1-fpm-nginx&page=1&ordering=-name)
[![serversideup/php:8.0-fpm-nginx](https://img.shields.io/docker/image-size/serversideup/php/8.0-fpm-nginx?label=serversideup%2Fphp%3A8.0-fpm-nginx)](https://hub.docker.com/r/serversideup/php/tags?name=8.0-fpm-nginx&page=1&ordering=-name)
[![serversideup/php:7.4-fpm-nginx](https://img.shields.io/docker/image-size/serversideup/php/7.4-fpm-nginx?label=serversideup%2Fphp%3A7.4-fpm-nginx)](https://hub.docker.com/r/serversideup/php/tags?name=7.4-fpm-nginx&page=1&ordering=-name)
**Alpine Based**
[![serversideup/php:8.4-fpm-nginx-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.4-fpm-nginx-alpine?label=serversideup%2Fphp%3A8.4-fpm-nginx-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.4-fpm-nginx-alpine&page=1&ordering=-name)
[![serversideup/php:8.3-fpm-nginx-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.3-fpm-nginx-alpine?label=serversideup%2Fphp%3A8.3-fpm-nginx-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.3-fpm-nginx-alpine&page=1&ordering=-name)
[![serversideup/php:8.2-fpm-nginx-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.2-fpm-nginx-alpine?label=serversideup%2Fphp%3A8.2-fpm-nginx-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.2-fpm-nginx-alpine&page=1&ordering=-name)
[![serversideup/php:8.1-fpm-nginx-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.1-fpm-nginx-alpine?label=serversideup%2Fphp%3A8.1-fpm-nginx-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.1-fpm-nginx-alpine&page=1&ordering=-name)
[![serversideup/php:8.0-fpm-nginx-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.0-fpm-nginx-alpine?label=serversideup%2Fphp%3A8.0-fpm-nginx-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.0-fpm-nginx-alpine&page=1&ordering=-name)
[![serversideup/php:7.4-fpm-nginx-alpine](https://img.shields.io/docker/image-size/serversideup/php/7.4-fpm-nginx-alpine?label=serversideup%2Fphp%3A7.4-fpm-nginx-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=7.4-fpm-nginx-alpine&page=1&ordering=-name) | -| unit | **Debian Based**
[![serversideup/php:8.4-unit](https://img.shields.io/docker/image-size/serversideup/php/8.4-unit?label=serversideup%2Fphp%3A8.4-unit)](https://hub.docker.com/r/serversideup/php/tags?name=8.4-unit&page=1&ordering=-name)
[![serversideup/php:8.3-unit](https://img.shields.io/docker/image-size/serversideup/php/8.3-unit?label=serversideup%2Fphp%3A8.3-unit)](https://hub.docker.com/r/serversideup/php/tags?name=8.3-unit&page=1&ordering=-name)
[![serversideup/php:8.2-unit](https://img.shields.io/docker/image-size/serversideup/php/8.2-unit?label=serversideup%2Fphp%3A8.2-unit)](https://hub.docker.com/r/serversideup/php/tags?name=8.2-unit&page=1&ordering=-name)
[![serversideup/php:8.1-unit](https://img.shields.io/docker/image-size/serversideup/php/8.1-unit?label=serversideup%2Fphp%3A8.1-unit)](https://hub.docker.com/r/serversideup/php/tags?name=8.1-unit&page=1&ordering=-name)
[![serversideup/php:8.0-unit](https://img.shields.io/docker/image-size/serversideup/php/8.0-unit?label=serversideup%2Fphp%3A8.0-unit)](https://hub.docker.com/r/serversideup/php/tags?name=8.0-unit&page=1&ordering=-name)
[![serversideup/php:7.4-unit](https://img.shields.io/docker/image-size/serversideup/php/7.4-unit?label=serversideup%2Fphp%3A7.4-unit)](https://hub.docker.com/r/serversideup/php/tags?name=7.4-unit&page=1&ordering=-name) | +| âš™ī¸ Variation | 🚀 Version | +| ------------ | ---------- | +| cli | **Debian Based**
[![serversideup/php:8.4-cli](https://img.shields.io/docker/image-size/serversideup/php/8.4-cli?label=serversideup%2Fphp%3A8.4-cli)](https://hub.docker.com/r/serversideup/php/tags?name=8.4-cli&page=1&ordering=-name)
[![serversideup/php:8.3-cli](https://img.shields.io/docker/image-size/serversideup/php/8.3-cli?label=serversideup%2Fphp%3A8.3-cli)](https://hub.docker.com/r/serversideup/php/tags?name=8.3-cli&page=1&ordering=-name)
[![serversideup/php:8.2-cli](https://img.shields.io/docker/image-size/serversideup/php/8.2-cli?label=serversideup%2Fphp%3A8.2-cli)](https://hub.docker.com/r/serversideup/php/tags?name=8.2-cli&page=1&ordering=-name)
[![serversideup/php:8.1-cli](https://img.shields.io/docker/image-size/serversideup/php/8.1-cli?label=serversideup%2Fphp%3A8.1-cli)](https://hub.docker.com/r/serversideup/php/tags?name=8.1-cli&page=1&ordering=-name)
[![serversideup/php:8.0-cli](https://img.shields.io/docker/image-size/serversideup/php/8.0-cli?label=serversideup%2Fphp%3A8.0-cli)](https://hub.docker.com/r/serversideup/php/tags?name=8.0-cli&page=1&ordering=-name)
[![serversideup/php:7.4-cli](https://img.shields.io/docker/image-size/serversideup/php/7.4-cli?label=serversideup%2Fphp%3A7.4-cli)](https://hub.docker.com/r/serversideup/php/tags?name=7.4-cli&page=1&ordering=-name)
**Alpine Based**
[![serversideup/php:8.4-cli-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.4-cli-alpine?label=serversideup%2Fphp%3A8.4-cli-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.4-cli-alpine&page=1&ordering=-name)
[![serversideup/php:8.3-cli-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.3-cli-alpine?label=serversideup%2Fphp%3A8.3-cli-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.3-cli&page=1&ordering=-name)
[![serversideup/php:8.2-cli-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.2-cli-alpine?label=serversideup%2Fphp%3A8.2-cli-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.2-cli-alpine&page=1&ordering=-name)
[![serversideup/php:8.1-cli-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.1-cli-alpine?label=serversideup%2Fphp%3A8.1-cli-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.1-cli-alpine&page=1&ordering=-name)
[![serversideup/php:8.0-cli-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.0-cli-alpine?label=serversideup%2Fphp%3A8.0-cli-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.0-cli-alpine&page=1&ordering=-name)
[![serversideup/php:7.4-cli-alpine](https://img.shields.io/docker/image-size/serversideup/php/7.4-cli-alpine?label=serversideup%2Fphp%3A7.4-cli-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=7.4-cli-alpine&page=1&ordering=-name) | +| fpm | **Debian Based**
[![serversideup/php:8.4-fpm](https://img.shields.io/docker/image-size/serversideup/php/8.4-fpm?label=serversideup%2Fphp%3A8.4-fpm)](https://hub.docker.com/r/serversideup/php/tags?name=8.4-fpm&page=1&ordering=-name)
[![serversideup/php:8.3-fpm](https://img.shields.io/docker/image-size/serversideup/php/8.3-fpm?label=serversideup%2Fphp%3A8.3-fpm)](https://hub.docker.com/r/serversideup/php/tags?name=8.3-fpm&page=1&ordering=-name)
[![serversideup/php:8.2-fpm](https://img.shields.io/docker/image-size/serversideup/php/8.2-fpm?label=serversideup%2Fphp%3A8.2-fpm)](https://hub.docker.com/r/serversideup/php/tags?name=8.2-fpm&page=1&ordering=-name)
[![serversideup/php:8.1-fpm](https://img.shields.io/docker/image-size/serversideup/php/8.1-fpm?label=serversideup%2Fphp%3A8.1-fpm)](https://hub.docker.com/r/serversideup/php/tags?name=8.1-fpm&page=1&ordering=-name)
[![serversideup/php:8.0-fpm](https://img.shields.io/docker/image-size/serversideup/php/8.0-fpm?label=serversideup%2Fphp%3A8.0-fpm)](https://hub.docker.com/r/serversideup/php/tags?name=8.0-fpm&page=1&ordering=-name)
[![serversideup/php:7.4-fpm](https://img.shields.io/docker/image-size/serversideup/php/7.4-fpm?label=serversideup%2Fphp%3A7.4-fpm)](https://hub.docker.com/r/serversideup/php/tags?name=7.4-fpm&page=1&ordering=-name)
**Alpine Based**
[![serversideup/php:8.4-fpm-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.4-fpm-alpine?label=serversideup%2Fphp%3A8.4-fpm-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.4-fpm-alpine&page=1&ordering=-name)
[![serversideup/php:8.3-fpm-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.3-fpm-alpine?label=serversideup%2Fphp%3A8.3-fpm-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.3-fpm-alpine&page=1&ordering=-name)
[![serversideup/php:8.2-fpm-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.2-fpm-alpine?label=serversideup%2Fphp%3A8.2-fpm-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.2-fpm-alpine&page=1&ordering=-name)
[![serversideup/php:8.1-fpm-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.1-fpm-alpine?label=serversideup%2Fphp%3A8.1-fpm-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.1-fpm-alpine&page=1&ordering=-name)
[![serversideup/php:8.0-fpm-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.0-fpm-alpine?label=serversideup%2Fphp%3A8.0-fpm-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.0-fpm-alpine&page=1&ordering=-name)
[![serversideup/php:7.4-fpm-alpine](https://img.shields.io/docker/image-size/serversideup/php/7.4-fpm-alpine?label=serversideup%2Fphp%3A7.4-fpm-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=7.4-fpm-alpine&page=1&ordering=-name) | +| fpm-apache | **Debian Based**
[![serversideup/php:8.4-fpm-apache](https://img.shields.io/docker/image-size/serversideup/php/8.4-fpm-apache?label=serversideup%2Fphp%3A8.4-fpm-apache)](https://hub.docker.com/r/serversideup/php/tags?name=8.4-fpm-apache&page=1&ordering=-name)
[![serversideup/php:8.3-fpm-apache](https://img.shields.io/docker/image-size/serversideup/php/8.3-fpm-apache?label=serversideup%2Fphp%3A8.3-fpm-apache)](https://hub.docker.com/r/serversideup/php/tags?name=8.3-fpm-apache&page=1&ordering=-name)
[![serversideup/php:8.2-fpm-apache](https://img.shields.io/docker/image-size/serversideup/php/8.2-fpm-apache?label=serversideup%2Fphp%3A8.2-fpm-apache)](https://hub.docker.com/r/serversideup/php/tags?name=8.2-fpm-apache&page=1&ordering=-name)
[![serversideup/php:8.1-fpm-apache](https://img.shields.io/docker/image-size/serversideup/php/8.1-fpm-apache?label=serversideup%2Fphp%3A8.1-fpm-apache)](https://hub.docker.com/r/serversideup/php/tags?name=8.1-fpm-apache&page=1&ordering=-name)
[![serversideup/php:8.0-fpm-apache](https://img.shields.io/docker/image-size/serversideup/php/8.0-fpm-apache?label=serversideup%2Fphp%3A8.0-fpm-apache)](https://hub.docker.com/r/serversideup/php/tags?name=8.0-fpm-apache&page=1&ordering=-name)
[![serversideup/php:7.4-fpm-apache](https://img.shields.io/docker/image-size/serversideup/php/7.4-fpm-apache?label=serversideup%2Fphp%3A7.4-fpm-apache)](https://hub.docker.com/r/serversideup/php/tags?name=7.4-fpm-apache&page=1&ordering=-name) | +| fpm-nginx | **Debian Based**
[![serversideup/php:8.4-fpm-nginx](https://img.shields.io/docker/image-size/serversideup/php/8.4-fpm-nginx?label=serversideup%2Fphp%3A8.4-fpm-nginx)](https://hub.docker.com/r/serversideup/php/tags?name=8.4-fpm-nginx&page=1&ordering=-name)
[![serversideup/php:8.3-fpm-nginx](https://img.shields.io/docker/image-size/serversideup/php/8.3-fpm-nginx?label=serversideup%2Fphp%3A8.3-fpm-nginx)](https://hub.docker.com/r/serversideup/php/tags?name=8.3-fpm-nginx&page=1&ordering=-name)
[![serversideup/php:8.2-fpm-nginx](https://img.shields.io/docker/image-size/serversideup/php/8.2-fpm-nginx?label=serversideup%2Fphp%3A8.2-fpm-nginx)](https://hub.docker.com/r/serversideup/php/tags?name=8.2-fpm-nginx&page=1&ordering=-name)
[![serversideup/php:8.1-fpm-nginx](https://img.shields.io/docker/image-size/serversideup/php/8.1-fpm-nginx?label=serversideup%2Fphp%3A8.1-fpm-nginx)](https://hub.docker.com/r/serversideup/php/tags?name=8.1-fpm-nginx&page=1&ordering=-name)
[![serversideup/php:8.0-fpm-nginx](https://img.shields.io/docker/image-size/serversideup/php/8.0-fpm-nginx?label=serversideup%2Fphp%3A8.0-fpm-nginx)](https://hub.docker.com/r/serversideup/php/tags?name=8.0-fpm-nginx&page=1&ordering=-name)
[![serversideup/php:7.4-fpm-nginx](https://img.shields.io/docker/image-size/serversideup/php/7.4-fpm-nginx?label=serversideup%2Fphp%3A7.4-fpm-nginx)](https://hub.docker.com/r/serversideup/php/tags?name=7.4-fpm-nginx&page=1&ordering=-name)
**Alpine Based**
[![serversideup/php:8.4-fpm-nginx-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.4-fpm-nginx-alpine?label=serversideup%2Fphp%3A8.4-fpm-nginx-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.4-fpm-nginx-alpine&page=1&ordering=-name)
[![serversideup/php:8.3-fpm-nginx-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.3-fpm-nginx-alpine?label=serversideup%2Fphp%3A8.3-fpm-nginx-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.3-fpm-nginx-alpine&page=1&ordering=-name)
[![serversideup/php:8.2-fpm-nginx-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.2-fpm-nginx-alpine?label=serversideup%2Fphp%3A8.2-fpm-nginx-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.2-fpm-nginx-alpine&page=1&ordering=-name)
[![serversideup/php:8.1-fpm-nginx-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.1-fpm-nginx-alpine?label=serversideup%2Fphp%3A8.1-fpm-nginx-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.1-fpm-nginx-alpine&page=1&ordering=-name)
[![serversideup/php:8.0-fpm-nginx-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.0-fpm-nginx-alpine?label=serversideup%2Fphp%3A8.0-fpm-nginx-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.0-fpm-nginx-alpine&page=1&ordering=-name)
[![serversideup/php:7.4-fpm-nginx-alpine](https://img.shields.io/docker/image-size/serversideup/php/7.4-fpm-nginx-alpine?label=serversideup%2Fphp%3A7.4-fpm-nginx-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=7.4-fpm-nginx-alpine&page=1&ordering=-name) | +| frankenphp | **Debian Based**
[![serversideup/php:8.4-frankenphp](https://img.shields.io/docker/image-size/serversideup/php/8.4-frankenphp?label=serversideup%2Fphp%3A8.4-frankenphp)](https://hub.docker.com/r/serversideup/php/tags?name=8.4-frankenphp&page=1&ordering=-name)
[![serversideup/php:8.3-frankenphp](https://img.shields.io/docker/image-size/serversideup/php/8.3-frankenphp?label=serversideup%2Fphp%3A8.3-frankenphp)](https://hub.docker.com/r/serversideup/php/tags?name=8.3-frankenphp&page=1&ordering=-name)
**Alpine Based**
[![serversideup/php:8.4-frankenphp-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.4-frankenphp-alpine?label=serversideup%2Fphp%3A8.4-frankenphp-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.4-frankenphp-alpine&page=1&ordering=-name)
[![serversideup/php:8.3-frankenphp-alpine](https://img.shields.io/docker/image-size/serversideup/php/8.3-frankenphp-alpine?label=serversideup%2Fphp%3A8.3-frankenphp-alpine)](https://hub.docker.com/r/serversideup/php/tags?name=8.3-frankenphp-alpine&page=1&ordering=-name) | +| unit (deprecated) | âš ī¸ NGINX is no longer maintaining NGINX Unit. It will eventually be removed from this project. [Learn more →](https://serversideup.net/open-source/docker-php/docs/image-variations/unit) | ## Resources - **[Website](https://serversideup.net/open-source/docker-php/)** overview of the product. diff --git a/docs/.env.example b/docs/.env.example index c47b2b615..2bc52195e 100644 --- a/docs/.env.example +++ b/docs/.env.example @@ -1,3 +1,10 @@ +# Core Nuxt Framework Settings NUXT_APP_BASE_URL=/open-source/docker-php -TOP_LEVEL_DOMAIN=http://localhost:3000 -BASE_PATH=http://localhost:3000/open-source/docker-php \ No newline at end of file + +# Nuxt SEO Settings +NUXT_SITE_URL=https://localhost:3000/open-source/docker-php +NUXT_SITE_NAME="Docker PHP - Server Side Up" +NUXT_SITE_ENV="development" + +# Analytics +PLAUSIBLE_ENABLED=false \ No newline at end of file diff --git a/docs/.gitignore b/docs/.gitignore index 438cb0860..6bbb425a0 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -1,8 +1,27 @@ -node_modules -*.log* +# Nuxt dev/build outputs +.output +.data .nuxt .nitro .cache -.output -.env dist + +# Node dependencies +node_modules + +# Logs +logs +*.log + +# Misc +.DS_Store +.fleet +.idea + +# Local env files +.env +.env.* +!.env.example + +# VSC +.history diff --git a/docs/.npmrc b/docs/.npmrc index cf0404245..bf2e7648b 100644 --- a/docs/.npmrc +++ b/docs/.npmrc @@ -1,2 +1 @@ shamefully-hoist=true -strict-peer-dependencies=false diff --git a/docs/.nvmrc b/docs/.nvmrc index 2edeafb09..8fdd954df 100644 --- a/docs/.nvmrc +++ b/docs/.nvmrc @@ -1 +1 @@ -20 \ No newline at end of file +22 \ No newline at end of file diff --git a/docs/AGENTS.md b/docs/AGENTS.md new file mode 100644 index 000000000..cf969c43c --- /dev/null +++ b/docs/AGENTS.md @@ -0,0 +1,187 @@ +# AI Agent Guidelines for Documentation + +You are a highly skilled technical writer and PHP system administrator. You are an expert at breaking down complex technical concepts into easy to understand language. You also carry a significant experience in structuring open source documentation to make it easy for others to understand, modify, and contribute to the project. + +## Project Context + +This is the documentation site for **serversideup/php** - production-ready Docker images optimized for PHP applications (especially Laravel). Looking at the project root, you'll see the following directories: +``` +docs/ # Documentation and Marketing site +scripts/ # Scripts used for image building and deployment +src/ # Source code for the PHP Docker images +``` +### Key Technologies in the docs/ directory +- **Nuxt 4** - Vue-based static site generator +- **Nuxt Content** - File-based CMS for markdown documentation +- **Nuxt UI** - Component library for the Nuxt 4 application +- **TailwindCSS** - Utility-first CSS framework + +## Documentation Structure + +The documentation site (located in the docs/ directory) follows this organization: + +``` +app/ # Nuxt app configuration +content/ # Markdown documentation +public/ # Static assets +server/ # Server-side routes for the Nuxt application +``` + +Important note: This application is 100% static and does not require a database or server-side rendering. It is a simple Nuxt 4 application that uses the Nuxt Content module to build the documentation site. The site is then deployed to a static hosting provider like CloudFlare Pages. + + +## Writing Guidelines + +### 1. **Tone and Voice** +- Use clear, conversational language that's professional but approachable +- Write for developers of varying skill levels - beginners to advanced +- Avoid jargon when possible; when technical terms are necessary, explain them +- Use active voice and second person ("you" instead of "one" or "the user") +- Be friendly and approachable, but not too casual. + +### 2. **Content Structure** +- Start with the "why" before the "how" +- Use clear, descriptive headings that follow a logical hierarchy +- Include practical examples that users can copy and run +- Add callouts (notes, warnings, tips) for important information +- Break up long sections with subheadings, lists, and code blocks + +### 3. **Code Examples** +- Always test code examples to ensure they work +- Include comments in complex examples +- Show realistic, production-ready examples when possible +- Specify language syntax highlighting in code blocks +- For Docker examples, use the actual image tags available in the project + +### 4. **Markdown Conventions** +- Use ATX-style headers (# ## ###) not underline style +- Use fenced code blocks with language identifiers +- Use relative links for internal documentation +- Use absolute URLs for external resources +- Include alt text for all images + +### 5. **Docker-Specific Guidelines** +When documenting Docker concepts: +- Show both Docker CLI and Docker Compose examples +- Explain what environment variables do and their default values +- Include health check examples +- Demonstrate volume mounts with real use cases +- Always specify image tags (never use `:latest`) + +### 6. **Laravel-Specific Guidelines** +When documenting Laravel features: +- Reference official Laravel documentation when appropriate +- Show examples using Laravel conventions (Artisan, config, .env) +- Explain automations that the images provide for Laravel +- Document queue, schedule, and Horizon workers properly + +## Content Review Checklist + +Before considering documentation complete, verify: + +- [ ] All code examples are tested and working +- [ ] External links are valid and not broken +- [ ] Spelling and grammar are correct +- [ ] Headings follow logical hierarchy (H1 → H2 → H3) +- [ ] Code blocks have appropriate syntax highlighting +- [ ] Complex concepts include examples or diagrams +- [ ] Callouts (notes/warnings) are used appropriately +- [ ] Cross-references to other docs use relative links +- [ ] Docker image versions match what's actually available +- [ ] Content is accurate to the current version + +## Common Patterns + +### Callout Boxes +Use Markdown callouts for important information: +```markdown +::note +Here's some additional information. +:: + +::tip +Here's a helpful suggestion. +:: + +::warning +Be careful with this action as it might have unexpected results. +:: + +::caution +This action cannot be undone. +:: +``` + +### Code Blocks +Use code blocks to display multi-line code snippets with syntax highlighting. Code blocks are essential for presenting code examples clearly. When writing a code-block, you can specify a filename that will be displayed on top of the code block. An icon will be automatically displayed based on the extension or the name. Filenames help users understand the code's location and purpose within a project. To highlight lines of code, add {} around the line numbers you want to highlight. Line highlighting is useful for focusing users on important parts of code examples. + +```markdown +Here's how to configure PHP-FPM with custom settings: + +\`\`\`ts [nuxt.config.ts]{4-5} +export default defineAppConfig({ + ui: { + icons: { + copy: 'i-lucide-copy', + copyCheck: 'i-lucide-copy-check' + } + } +}) +\`\`\` +``` + +## File Naming Conventions + +- Use numbered prefixes for ordered content: `1.index.md`, `2.installation.md` +- Use kebab-case for file names: `these-images-vs-others.md` +- Keep file names concise but descriptive +- Match file names to the primary H1 heading (URL-friendly version) + +## When to Ask Questions + +Don't guess or assume when: +- Technical accuracy is in question (Docker config, PHP settings, etc.) +- Breaking changes affect existing documentation +- New features need to be documented but requirements are unclear +- Examples might not work across different OS or environments + +## Helpful Resources + +- [Official Nuxt Content Documentation](https://content.nuxt.com/) +- [Nuxt UI Docs Template](https://docs-template.nuxt.dev/) +- [Docker Best Practices](https://docs.docker.com/develop/dev-best-practices/) +- [Laravel Documentation](https://laravel.com/docs) +- [serversideup/php GitHub Repository](https://github.com/serversideup/docker-php) +- [Write the Docs Style Guide](https://www.writethedocs.org/guide/writing/style-guides/) + +## Component Usage + +This Nuxt docs site has custom Vue components. Familiarize yourself with: +- `` - Project logo +- `` - Status badges +- `` - Video embeds +- `` - Navigation +- `` - Template selection + +Check `app/components/` directory for available components before creating new ones. + +## Testing Changes Locally + +To test documentation changes: +```bash +cd docs/ +yarn install +yarn dev +``` + +Browse to http://localhost:3000 to preview changes. + +## Remember + +- **Users first**: Always consider what the reader needs to accomplish +- **Clarity over cleverness**: Simple, clear language beats fancy technical writing +- **Examples matter**: Show, don't just tell +- **Accuracy is critical**: Wrong documentation is worse than no documentation +- **Open source mindset**: Make it easy for others to contribute and improve + +Your goal is to help users succeed with these Docker images quickly and confidently. \ No newline at end of file diff --git a/docs/README.md b/docs/README.md index 38d0b403c..53550b097 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,5 +1,5 @@ # Documentation & Static Site, generated with Nuxt Content -This is a documentation site built on top of Nuxt Content (v3). +This is a documentation site built on top of Nuxt Content. # Docs location All docs are located in the [./content](./content/docs) folder if you're just looking for the docs in plain text. @@ -47,3 +47,14 @@ yarn preview ``` Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information. + +# Power User Tips +If you're diving deep into the docs, here are some tips to help you out: + +## Components +All components are from the [Nuxt UI](https://ui.nuxt.com/) component library, using the [Nuxt UI Documentation Template](https://docs-template.nuxt.dev). + +[View the Nuxt UI Documentation Template components →](https://docs-template.nuxt.dev/essentials/prose-components) + +## Icons +All icons are from the [Lucide](https://lucide.dev/icons/) icon set. Use the icon name of `i-lucide-` as the value for the `icon` field in the YAML frontmatter. \ No newline at end of file diff --git a/docs/app/app.config.ts b/docs/app/app.config.ts new file mode 100644 index 000000000..8fe6a9bb7 --- /dev/null +++ b/docs/app/app.config.ts @@ -0,0 +1,184 @@ +export default defineAppConfig({ + ui: { + colors: { + primary: 'blue', + neutral: 'neutral' + }, + banner: { + slots: { + icon: 'text-white size-5 shrink-0 pointer-events-none', + title: 'text-white font-bold text-sm truncate', + } + }, + pageCard: { + slots: { + leadingIcon: 'size-12 text-primary-500', // Bigger icon with primary color + title: 'text-xl font-bold text-white mb-2', // Larger, bold title + description: 'text-gray-300 text-md leading-relaxed' // Styled description + } + }, + prose: { + codeIcon: { + 'compose.yml': 'i-services-docker', + 'compose.yaml': 'i-services-docker', + 'custom-nginx.conf': 'i-services-nginx', + 'deployment.yaml': 'i-services-kubernetes', + 'deployment.yml': 'i-services-kubernetes', + 'docker-compose.yaml': 'i-services-docker', + 'docker-compose.yml': 'i-services-docker', + 'dockerfile': 'i-services-docker', + 'Dockerfile': 'i-services-docker', + 'nginx.conf': 'i-services-nginx', + 'Terminal': 'i-ph-terminal-window-duotone' + }, + callout: { + slots: { + base: 'text-white [&_a]:text-white [&_a]:hover:text-white [&_a]:hover:border-white' + }, + variants: { + color: { + primary: { + base: '[&_a]:text-white [&_a]:hover:text-white [&_a]:hover:border-white' + }, + secondary: { + base: '[&_a]:text-white [&_a]:hover:text-white [&_a]:hover:border-white' + }, + success: { + base: '[&_a]:text-white [&_a]:hover:text-white [&_a]:hover:border-white' + }, + info: { + base: '[&_a]:text-white [&_a]:hover:text-white [&_a]:hover:border-white' + }, + warning: { + base: '[&_a]:text-white [&_a]:hover:text-white [&_a]:hover:border-white' + }, + error: { + base: '[&_a]:text-white [&_a]:hover:text-white [&_a]:hover:border-white' + }, + neutral: { + base: '[&_a]:text-white [&_a]:hover:text-white [&_a]:hover:border-white' + } + } + } + } + }, + mode: 'dark', + header: { + slots: { + right: 'flex items-center justify-end lg:flex-1 gap-3', + }, + }, + footer: { + slots: { + root: 'border-t border-default', + left: 'text-sm text-muted' + } + }, + }, + seo: { + siteName: 'PHP Docker Images (serversideup/php)' + }, + header: { + title: 'PHP Docker Images (serversideup/php)', + to: '/', + logo: { + alt: 'PHP Docker Images (serversideup/php)', + light: '/images/php-docker-logo.svg', + dark: '/images/php-docker-logo.svg' + }, + search: true, + links: [{ + 'icon': 'i-lucide-book-open', + 'to': '/docs/getting-started', + 'aria-label': 'Documentation', + 'label': 'Docs', + 'variant': 'ghost', + 'size': 'xl', + 'class': 'font-bold' + },{ + 'icon': 'i-simple-icons-discord', + 'to': 'https://serversideup.net/discord', + 'target': '_blank', + 'aria-label': 'Server Side Up on Discord', + 'label': 'Discord', + 'variant': 'ghost', + 'size': 'xl', + 'class': 'font-bold' + },{ + 'icon': 'i-simple-icons-github', + 'to': 'https://github.com/serversideup/docker-php', + 'target': '_blank', + 'aria-label': 'GitHub', + 'label': 'GitHub', + 'variant': 'ghost', + 'size': 'xl', + 'class': 'font-bold' + },{ + 'trailingIcon': 'i-lucide-heart', + 'label': 'Sponsor', + 'to': 'https://github.com/sponsors/serversideup', + 'target': '_blank', + 'aria-label': 'Sponsor', + 'size': 'xl', + 'variant': 'outline', + 'class': 'font-bold', + + },{ + 'trailingIcon': 'i-lucide-arrow-right', + 'label': 'Get Started', + 'to': '/docs/getting-started', + 'aria-label': 'Get Started', + 'size': 'xl', + 'variant': 'solid', + 'class': 'font-bold bg-blue-600 text-white hover:bg-blue-700', + 'color': 'primary', + }] + }, + footer: { + credits: `âšĄī¸ Powered by Server Side Up`, + colorMode: false, + links: [{ + 'icon': 'i-simple-icons-discord', + 'to': 'https://serversideup.net/discord', + 'target': '_blank', + 'aria-label': 'Server Side Up on Discord' + }, { + 'icon': 'i-simple-icons-x', + 'to': 'https://x.com/serversideup', + 'target': '_blank', + 'aria-label': 'Server Side Up on X' + }, { + 'icon': 'i-simple-icons-github', + 'to': 'https://github.com/serversideup/', + 'target': '_blank', + 'aria-label': 'Server Side Up on GitHub' + }] + }, + toc: { + title: 'Table of Contents', + bottom: { + title: 'Community', + edit: 'https://github.com/serversideup/docker-php/edit/main/docs/content', + links: [ + { + icon: 'i-lucide-star', + label: 'Star on GitHub', + to: 'https://github.com/serversideup/docker-php', + target: '_blank' + }, + { + icon: 'i-lucide-bell-ring', + label: 'Subscribe', + to: 'https://serversideup.net/subscribe', + target: '_blank' + }, + { + icon: 'i-lucide-handshake', + label: 'Professional Help', + to: 'https://serversideup.net/professional-support', + target: '_blank' + } + ] + } + } +}) diff --git a/docs/app/app.vue b/docs/app/app.vue new file mode 100644 index 000000000..6a91e8264 --- /dev/null +++ b/docs/app/app.vue @@ -0,0 +1,67 @@ + + + diff --git a/docs/app/assets/css/main.css b/docs/app/assets/css/main.css new file mode 100644 index 000000000..0daf6787b --- /dev/null +++ b/docs/app/assets/css/main.css @@ -0,0 +1,49 @@ +@import "tailwindcss"; +@import "@nuxt/ui"; + +@source "../../../content/**/*"; + +@theme { + --color-mode: 'dark'; + --color-mode-fallback: 'dark'; + --color-mode-preference: 'dark'; + --color-mode-fallback: 'dark'; +} + +@theme static { + --ui-header-height: --spacing(24); + --container-8xl: 90rem; + --font-sans: 'Inter', sans-serif; + + --color-green-50: #EFFDF5; + --color-green-100: #D9FBE8; + --color-green-200: #B3F5D1; + --color-green-300: #75EDAE; + --color-green-400: #00DC82; + --color-green-500: #00C16A; + --color-green-600: #00A155; + --color-green-700: #007F45; + --color-green-800: #016538; + --color-green-900: #0A5331; + --color-green-950: #052E16; +} + +:root { + --ui-container: var(--container-8xl); +} + +ul li a:after { + margin-left: 6px; +} + +ul ul ul { + border: none !important; +} + +/* ul ul ul li a:after { + margin-left: -13px; +} + +ul li ul li{ + padding-inline-start: 0; +} */ \ No newline at end of file diff --git a/docs/public/images/icons/cloudflare-square.svg b/docs/app/assets/icons/features/cloudflare-square.svg similarity index 100% rename from docs/public/images/icons/cloudflare-square.svg rename to docs/app/assets/icons/features/cloudflare-square.svg diff --git a/docs/public/images/icons/community-icon.svg b/docs/app/assets/icons/features/community-icon.svg similarity index 100% rename from docs/public/images/icons/community-icon.svg rename to docs/app/assets/icons/features/community-icon.svg diff --git a/docs/public/images/icons/docs-icon.svg b/docs/app/assets/icons/features/docs-icon.svg similarity index 100% rename from docs/public/images/icons/docs-icon.svg rename to docs/app/assets/icons/features/docs-icon.svg diff --git a/docs/app/assets/icons/features/frankenphp-square.svg b/docs/app/assets/icons/features/frankenphp-square.svg new file mode 100644 index 000000000..04f03fcd0 --- /dev/null +++ b/docs/app/assets/icons/features/frankenphp-square.svg @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/public/images/icons/heart-square.svg b/docs/app/assets/icons/features/heart-square.svg similarity index 100% rename from docs/public/images/icons/heart-square.svg rename to docs/app/assets/icons/features/heart-square.svg diff --git a/docs/public/images/icons/heart.svg b/docs/app/assets/icons/features/heart.svg similarity index 100% rename from docs/public/images/icons/heart.svg rename to docs/app/assets/icons/features/heart.svg diff --git a/docs/public/images/icons/heartbeat-square.svg b/docs/app/assets/icons/features/heartbeat-square.svg similarity index 100% rename from docs/public/images/icons/heartbeat-square.svg rename to docs/app/assets/icons/features/heartbeat-square.svg diff --git a/docs/public/images/icons/lightning-square.svg b/docs/app/assets/icons/features/lightning-square.svg similarity index 100% rename from docs/public/images/icons/lightning-square.svg rename to docs/app/assets/icons/features/lightning-square.svg diff --git a/docs/public/images/icons/logging-square.svg b/docs/app/assets/icons/features/logging-square.svg similarity index 100% rename from docs/public/images/icons/logging-square.svg rename to docs/app/assets/icons/features/logging-square.svg diff --git a/docs/public/images/icons/nginx-square.svg b/docs/app/assets/icons/features/nginx-square.svg similarity index 100% rename from docs/public/images/icons/nginx-square.svg rename to docs/app/assets/icons/features/nginx-square.svg diff --git a/docs/public/images/icons/php-square.svg b/docs/app/assets/icons/features/php-square.svg similarity index 100% rename from docs/public/images/icons/php-square.svg rename to docs/app/assets/icons/features/php-square.svg diff --git a/docs/public/images/icons/rocket-square.svg b/docs/app/assets/icons/features/rocket-square.svg similarity index 100% rename from docs/public/images/icons/rocket-square.svg rename to docs/app/assets/icons/features/rocket-square.svg diff --git a/docs/public/images/icons/search-icon.svg b/docs/app/assets/icons/features/search-icon.svg similarity index 100% rename from docs/public/images/icons/search-icon.svg rename to docs/app/assets/icons/features/search-icon.svg diff --git a/docs/public/images/icons/shield-square.svg b/docs/app/assets/icons/features/shield-square.svg similarity index 100% rename from docs/public/images/icons/shield-square.svg rename to docs/app/assets/icons/features/shield-square.svg diff --git a/docs/public/images/icons/stars-square.svg b/docs/app/assets/icons/features/stars-square.svg similarity index 100% rename from docs/public/images/icons/stars-square.svg rename to docs/app/assets/icons/features/stars-square.svg diff --git a/docs/app/assets/icons/hosts/digitalocean-square.svg b/docs/app/assets/icons/hosts/digitalocean-square.svg new file mode 100644 index 000000000..ef70db6f7 --- /dev/null +++ b/docs/app/assets/icons/hosts/digitalocean-square.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/app/assets/icons/hosts/digitalocean.svg b/docs/app/assets/icons/hosts/digitalocean.svg new file mode 100644 index 000000000..79ba1c65b --- /dev/null +++ b/docs/app/assets/icons/hosts/digitalocean.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/docs/app/assets/icons/hosts/hetzner-square.svg b/docs/app/assets/icons/hosts/hetzner-square.svg new file mode 100644 index 000000000..a91dce2f6 --- /dev/null +++ b/docs/app/assets/icons/hosts/hetzner-square.svg @@ -0,0 +1,3 @@ + + + diff --git a/docs/app/assets/icons/hosts/hetzner.svg b/docs/app/assets/icons/hosts/hetzner.svg new file mode 100644 index 000000000..f291a5f91 --- /dev/null +++ b/docs/app/assets/icons/hosts/hetzner.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/app/assets/icons/hosts/sevalla-square.svg b/docs/app/assets/icons/hosts/sevalla-square.svg new file mode 100644 index 000000000..f431d5332 --- /dev/null +++ b/docs/app/assets/icons/hosts/sevalla-square.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/app/assets/icons/hosts/sevalla.svg b/docs/app/assets/icons/hosts/sevalla.svg new file mode 100644 index 000000000..618233fe3 --- /dev/null +++ b/docs/app/assets/icons/hosts/sevalla.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/app/assets/icons/hosts/vultr-square.svg b/docs/app/assets/icons/hosts/vultr-square.svg new file mode 100644 index 000000000..8f4866d9b --- /dev/null +++ b/docs/app/assets/icons/hosts/vultr-square.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/app/assets/icons/hosts/vultr.svg b/docs/app/assets/icons/hosts/vultr.svg new file mode 100644 index 000000000..ee7dda82a --- /dev/null +++ b/docs/app/assets/icons/hosts/vultr.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/app/assets/icons/services/docker.svg b/docs/app/assets/icons/services/docker.svg new file mode 100644 index 000000000..3c63e14d6 --- /dev/null +++ b/docs/app/assets/icons/services/docker.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/app/assets/icons/services/kubernetes.svg b/docs/app/assets/icons/services/kubernetes.svg new file mode 100644 index 000000000..f775907a4 --- /dev/null +++ b/docs/app/assets/icons/services/kubernetes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/app/assets/icons/services/nginx.svg b/docs/app/assets/icons/services/nginx.svg new file mode 100644 index 000000000..f46bec54d --- /dev/null +++ b/docs/app/assets/icons/services/nginx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/app/components/About.vue b/docs/app/components/About.vue new file mode 100644 index 000000000..19e2931e1 --- /dev/null +++ b/docs/app/components/About.vue @@ -0,0 +1,34 @@ + \ No newline at end of file diff --git a/docs/app/components/AppFooter.vue b/docs/app/components/AppFooter.vue new file mode 100644 index 000000000..b82caba38 --- /dev/null +++ b/docs/app/components/AppFooter.vue @@ -0,0 +1,21 @@ + + + diff --git a/docs/app/components/AppHeader.vue b/docs/app/components/AppHeader.vue new file mode 100644 index 000000000..95bf5d322 --- /dev/null +++ b/docs/app/components/AppHeader.vue @@ -0,0 +1,76 @@ + + + diff --git a/docs/app/components/AppLogo.vue b/docs/app/components/AppLogo.vue new file mode 100644 index 000000000..521061f3e --- /dev/null +++ b/docs/app/components/AppLogo.vue @@ -0,0 +1,40 @@ + diff --git a/docs/components/content/Badges.vue b/docs/app/components/Badges.vue similarity index 92% rename from docs/components/content/Badges.vue rename to docs/app/components/Badges.vue index c8fb01105..498535522 100644 --- a/docs/components/content/Badges.vue +++ b/docs/app/components/Badges.vue @@ -1,5 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/docs/app/components/GetStarted.vue b/docs/app/components/GetStarted.vue new file mode 100644 index 000000000..4495c6009 --- /dev/null +++ b/docs/app/components/GetStarted.vue @@ -0,0 +1,14 @@ + \ No newline at end of file diff --git a/docs/app/components/HeroVideo.vue b/docs/app/components/HeroVideo.vue new file mode 100644 index 000000000..d948c4cb4 --- /dev/null +++ b/docs/app/components/HeroVideo.vue @@ -0,0 +1,15 @@ + + + \ No newline at end of file diff --git a/docs/components/content/LandingSignup.vue b/docs/app/components/LandingSignup.vue similarity index 100% rename from docs/components/content/LandingSignup.vue rename to docs/app/components/LandingSignup.vue diff --git a/docs/app/components/LeadP.vue b/docs/app/components/LeadP.vue new file mode 100644 index 000000000..286453e18 --- /dev/null +++ b/docs/app/components/LeadP.vue @@ -0,0 +1,8 @@ + + + \ No newline at end of file diff --git a/docs/components/Global/OgImage/DocsImage.vue b/docs/app/components/OgImage/OgImageDocs.vue similarity index 100% rename from docs/components/Global/OgImage/DocsImage.vue rename to docs/app/components/OgImage/OgImageDocs.vue diff --git a/docs/app/components/PageHeaderLinks.vue b/docs/app/components/PageHeaderLinks.vue new file mode 100644 index 000000000..b4f7a42d7 --- /dev/null +++ b/docs/app/components/PageHeaderLinks.vue @@ -0,0 +1,83 @@ + + + diff --git a/docs/components/Global/ServerSideUp.vue b/docs/app/components/ServerSideUp.vue similarity index 64% rename from docs/components/Global/ServerSideUp.vue rename to docs/app/components/ServerSideUp.vue index e2d834912..ed5e65528 100644 --- a/docs/components/Global/ServerSideUp.vue +++ b/docs/app/components/ServerSideUp.vue @@ -3,7 +3,12 @@
- + + + + + +