{"id":18663076,"url":"https://github.com/asapdotid/docker-php-nginx","last_synced_at":"2026-04-24T16:02:26.546Z","repository":{"id":186095417,"uuid":"650595107","full_name":"asapdotid/docker-php-nginx","owner":"asapdotid","description":"Docker PHP (7.4, 8.1, 8.2, 8.3) + Nginx on Alpine Linux","archived":false,"fork":false,"pushed_at":"2025-08-22T12:50:33.000Z","size":79,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-22T14:50:23.098Z","etag":null,"topics":["container","nginx","php","php-nginx","php-nginx-docker","web","webserver"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/asapdotid.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-07T11:57:48.000Z","updated_at":"2025-08-22T12:50:36.000Z","dependencies_parsed_at":"2024-09-10T09:49:36.170Z","dependency_job_id":"024c1dab-382f-4b95-a610-86ff64d90db1","html_url":"https://github.com/asapdotid/docker-php-nginx","commit_stats":null,"previous_names":["asapdotid/docker-php-nginx"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/asapdotid/docker-php-nginx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asapdotid%2Fdocker-php-nginx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asapdotid%2Fdocker-php-nginx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asapdotid%2Fdocker-php-nginx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asapdotid%2Fdocker-php-nginx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asapdotid","download_url":"https://codeload.github.com/asapdotid/docker-php-nginx/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asapdotid%2Fdocker-php-nginx/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32230421,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T13:21:15.438Z","status":"ssl_error","status_checked_at":"2026-04-24T13:21:15.005Z","response_time":64,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["container","nginx","php","php-nginx","php-nginx-docker","web","webserver"],"created_at":"2024-11-07T08:14:58.361Z","updated_at":"2026-04-24T16:02:26.532Z","avatar_url":"https://github.com/asapdotid.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Docker Image PHP and Nginx\n\n-   Base image: `webdevops/php`\n-   OS image: Alpine Linux v3.16 \u0026 v3.20\n\nSetup docker image multiple platform:\n\n-   [Multi-platform images](https://docs.docker.com/build/building/multi-platform/)\n-   [Docker container driver](https://docs.docker.com/build/drivers/docker-container/)\n\n## Platform build images:\n\n-   amd64\n-   arm64\n\nPHP \u0026 Nginx (stable) Version:\n\n-   PHP: 8.3 \u0026 NGINX: 1.24.0 (Alpine Linux 3.20)\n-   PHP: 8.2 \u0026 NGINX: 1.24.0 (Alpine Linux 3.20)\n-   PHP: 8.1 \u0026 NGINX: 1.24.0 (Alpine Linux 3.20)\n-   PHP: 7.4 \u0026 NGINX: 1.22.1 (Alpine Linux 3.16)\n\n**PHP** Socket port: `127.0.0.1:9000`\n\n**Nginx** open port: `80` and `443`\n\n## Custum stuff\n\n-   Add composer entrypoint (composer.json) base of app env `development` or `production`\n-   Timezone set to `Asia/Jakarta`\n\n## To Do's\n\n-   ✅ Prepare Docker buildx setup\n-   ✅ Manual build Docker image\n-   ✅ Manual publish Docker image\n-   ⬜ Automatic build Docker image (GitHub workflows)\n-   ⬜ Automatic publish Docker image (GitHub workflows)\n\n## Makefile Commands\n\nHelping utility commands for simple build and push Docker image.\n\n### Help command:\n\n```bash\nmake help\n```\n\n### Build Multi-platform peparation:\n\n```bash\nmake prepare\n```\n\n### Building multi-platform images (build \u0026 push):\n\n```bash\nmake build VER=8.2 TAG=8.2\n```\n\nor\n\n```bash\nmake build VER=8.2 TAG=latest\n```\n\n### Publish docker image to docker hub:\n\nBefore publish image, first login to docker hub via cli:\n\n```bash\ndocker login\n```\n\nPublish docker image:\n\n```bash\nmake push VER=8.2\n```\n\nOr\n\n```bash\nmake push VER=8.2 TAG=latest\n```\n\n### Docker inspect the image:\n\n```bash\nmake inspect VER=7.4 TAG=7.4\n```\n\n## Image Environment\n\n### PHP modules\n\nAs we build our images containing almost every PHP module and having it\nactivated by default, you might want to deactivate some.\n\nYou can specify a comma-separated list of unwanted modules as dynamic\nenv variable `PHP_DISMOD`, e.g. `PHP_DISMOD=ioncube,redis`.\n\n### PHP.ini variables\n\nYou can specify eg. `php.memory_limit=256M` as dynamic env variable\nwhich will set `memory_limit = 256M` as php setting.\n\n| Environment variable                  | Description                             | Default   |\n| ------------------------------------- | --------------------------------------- | --------- |\n| `php.{setting-key}`                   | Sets the `{setting-key}` as php setting |           |\n| `PHP_DATE_TIMEZONE`                   | `date.timezone`                         | `UTC`     |\n| `PHP_DISPLAY_ERRORS`                  | `display_errors`                        | `0`       |\n| `PHP_MEMORY_LIMIT`                    | `memory_limit`                          | `512M`    |\n| `PHP_MAX_EXECUTION_TIME`              | `max_execution_time`                    | `300`     |\n| `PHP_POST_MAX_SIZE`                   | `post_max_size`                         | `50M`     |\n| `PHP_UPLOAD_MAX_FILESIZE`             | `upload_max_filesize`                   | `50M`     |\n| `PHP_OPCACHE_MEMORY_CONSUMPTION`      | `opcache.memory_consumption`            | `256`     |\n| `PHP_OPCACHE_MAX_ACCELERATED_FILES`   | `opcache.max_accelerated_files`         | `7963`    |\n| `PHP_OPCACHE_VALIDATE_TIMESTAMPS`     | `opcache.validate_timestamps`           | `default` |\n| `PHP_OPCACHE_REVALIDATE_FREQ`         | `opcache.revalidate_freq`               | `default` |\n| `PHP_OPCACHE_INTERNED_STRINGS_BUFFER` | `opcache.interned_strings_buffer`       | `16`      |\n\n### PHP FPM variables\n\nYou can specify eg. `fpm.pool.pm.max_requests=1000` as dyanmic env\nvariable which will sets `pm.max_requests = 1000` as fpm pool setting.\nThe prefix `fpm.pool` is for pool settings and `fpm.global` for global\nmaster process settings.\n\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr class=\"header\"\u003e\n\u003cth\u003eEnvironment variable\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003cth\u003eDefault\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr class=\"odd\"\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode\u003efpm.global.{setting-key}\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003efpm.pool.{setting-key}\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eSets the \u003ccode\u003e{setting-key}\u003c/code\u003e as fpm global setting for the\nmaster process Sets the \u003ccode\u003e{setting-key}\u003c/code\u003e as fpm pool\nsetting\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr class=\"even\"\u003e\n\u003ctd\u003e\u003ccode\u003eFPM_PROCESS_MAX\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eprocess.max\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003edistribution default\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr class=\"odd\"\u003e\n\u003ctd\u003e\u003ccode\u003eFPM_PM_MAX_CHILDREN\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003epm.max_children\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003edistribution default\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr class=\"even\"\u003e\n\u003ctd\u003e\u003ccode\u003eFPM_PM_START_SERVERS\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003epm.start_servers\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003edistribution default\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr class=\"odd\"\u003e\n\u003ctd\u003e\u003ccode\u003eFPM_PM_MIN_SPARE_SERVERS\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003epm.min_spare_servers\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003edistribution default\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr class=\"even\"\u003e\n\u003ctd\u003e\u003ccode\u003eFPM_PM_MAX_SPARE_SERVERS\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003epm.max_spare_servers\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003edistribution default\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr class=\"odd\"\u003e\n\u003ctd\u003e\u003ccode\u003eFPM_PROCESS_IDLE_TIMEOUT\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003epm.process_idle_timeout\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003edistribution default\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr class=\"even\"\u003e\n\u003ctd\u003e\u003ccode\u003eFPM_MAX_REQUESTS\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003epm.max_requests\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003edistribution default\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr class=\"odd\"\u003e\n\u003ctd\u003e\u003ccode\u003eFPM_REQUEST_TERMINATE_TIMEOUT\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003erequest_terminate_timeout\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003edistribution default\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr class=\"even\"\u003e\n\u003ctd\u003e\u003ccode\u003eFPM_RLIMIT_FILES\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003erlimit_files\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003edistribution default\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr class=\"odd\"\u003e\n\u003ctd\u003e\u003ccode\u003eFPM_RLIMIT_CORE\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003erlimit_core\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003edistribution default\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\n### Composer\n\nDue to the incompatibilities between composer v1 and v2 we introduce a\nsimple mechanism to switch between composer versions.\n\n| Environment variable | Description                         | Default |\n| -------------------- | ----------------------------------- | ------- |\n| `COMPOSER_VERSION`   | Specify the composer version to use | `2`     |\n\n#### Additional custom environment\n\n| Environment variable | Description                                               | Default        |\n| -------------------- | --------------------------------------------------------- | -------------- |\n| `APPLICATION_ENV`    | Specify the application env `development` or `production` | `production`   |\n| `SKIP_COMPOSER`      | Installation in application                               | `false`        |\n| `TIMEZONE`           | Timezone                                                  | `Asia/Jakarta` |\n\n## Docker Compose setup (Laravel)\n\n```yaml\n# compose.yml\nversion: \"3.7\"\n\nservices:\n    application:\n        image: docker.io/asapdotid/php:8.1\n        expose:\n            - 9000\n        networks:\n            - application-net\n        environment:\n            - PHP_POST_MAX_SIZE=100M\n            - PHP_UPLOAD_MAX_FILESIZE=100M\n        volumes:\n            - ./projects/laravel:/app\n            - ./conf/supervisor/laravel.conf:/etc/supervisor/conf.d/laravel.conf\n\nnetworks:\n    application-net:\n        name: application-net\n        driver: bridge\n```\n\n### Supervisor Config for Laravel (`laravel.conf`)\n\nPlace config to `/etc/supervisor/conf.d/laravel.conf`\n\n```ini\n[group:laravel-worker]\npriority=999\nprograms=laravel-schedule,laravel-notification,laravel-queue\n\n[program:laravel-schedule]\nnumprocs=1\nautostart=true\nautorestart=true\nredirect_stderr=true\nprocess_name=%(program_name)s_%(process_num)02d\ncommand=/usr/local/bin/php /app/artisan schedule:run\nstdout_logfile=/dev/stdout\nstdout_logfile_maxbytes=0\nstderr_logfile=/dev/stderr\nstderr_logfile_maxbytes=0\n\n[program:laravel-notification]\nnumprocs=1\nautostart=true\nautorestart=true\nredirect_stderr=true\nprocess_name=%(program_name)s_%(process_num)02d\ncommand=/usr/local/bin/php /app/artisan notification:worker\nstdout_logfile=/dev/stdout\nstdout_logfile_maxbytes=0\nstderr_logfile=/dev/stderr\nstderr_logfile_maxbytes=0\n\n[program:laravel-queue]\nnumprocs=5\nautostart=true\nautorestart=true\nredirect_stderr=true\nprocess_name=%(program_name)s_%(process_num)02d\ncommand=/usr/local/bin/php /app/artisan queue:work sqs --sleep=3 --tries=3\nstdout_logfile=/dev/stdout\nstdout_logfile_maxbytes=0\nstderr_logfile=/dev/stderr\nstderr_logfile_maxbytes=0\n```\n\n### Running Docker Composer\n\n```bash\ndocker composer up -d\n```\n\n## License\n\nMIT / BSD\n\n## Author Information\n\nThis Code was created in 2023 by [Asapdotid](https://github.com/asapdotid).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasapdotid%2Fdocker-php-nginx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fasapdotid%2Fdocker-php-nginx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasapdotid%2Fdocker-php-nginx/lists"}