- Saved searches
- Use saved searches to filter your results more quickly
- License
- mbentley/docker-php8-fpm
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- PHP 8 — универсальный Docker образ с поддержкой MySQL, PostgreSQL и MongoDB
- Saved searches
- Use saved searches to filter your results more quickly
- License
- devilbox/docker-php-fpm-8.0
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- Dockerize your PHP application with Nginx and PHP8-FPM
- Nginx setup
- Add PHP FPM
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
License
mbentley/docker-php8-fpm
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
docker image for php8-fpm based off of alpine:latest or alpine:3.16
To pull this image: docker pull mbentley/php8-fpm
Example usage: docker run -i -t mbentley/php8-fpm
The following environment variables can be passed to the docker image:
MAX_SIZE (default: 8) — Sets the ‘post_max_size’ and ‘upload_max_filesize’ options in php.ini; value is in MB
MAX_CHILDREN (default: 5) — Sets the ‘max_children’ option in www.conf
MEMORY_LIMIT (default: 128) — Sets the ‘memory_limit’ option in php.ini; value is in MB
LISTEN (default: socket; options: socket or port) — Changes php8-fpm listen behavior
Working with nginx + php8-fpm
First start a PHP container:
docker run -itd –restart=always -v /data/shared/run:/run -v /data/www:/data/www -v /data/shared/ssmtp:/etc/ssmtp —name php8-fpm mbentley/php8-fpm
I use a volume to /data/shared/run on the host and then I also use a volume to /data/www on the host. /data/shared/run will get the UNIX socket as it is mapped to /run. I use /data/www so that php5-fpm has access to the files it needs to process requests.
Now for my nginx container: docker run -itd -p 80 –restart=always -v /data/shared/run:/run -v /data/www:/data/www -v /data/shared/nginx/my-custom-nginx-conf:/etc/nginx/sites-available/default —name my-site mbentley/nginx
I need to present /data/shared/run as a volume so that nginx can read the UNIX socket (see my php.conf in mbentley/nginx which adds all of the necessary bits for PHP by including a single file). I also add in my /data/www directory which shares my site’s code for nginx.
Now you should be able to hit nginx and PHP pages will work. I’m using this method for a small number of sites and it’s working great.
PHP 8 — универсальный Docker образ с поддержкой MySQL, PostgreSQL и MongoDB
Совсем недавно (26 ноября 2020г.) состоялся релиз 8-й версии PHP и теперь можно его использовать для запуска в Docker контейнере. Дистрибутив в официальном image остался тем же (Debian 10 Buster), что и для PHP 7-й версии. Поэтому, если у вас уже есть Dockerfile для PHP7, то для создания контейнера для PHP8 надо всего лишь поменять имя базового образа в директиве FROM.
Я использую образ сразу с поддержкой MySQL, PostgreSQL и MongoDB, чтобы не собирать его под каждую БД отдельно.
FROM php:8-fpm RUN apt-get update \ && apt-get install -y \ apt-utils \ man \ curl \ git \ bash \ vim \ zip unzip \ acl \ iproute2 \ dnsutils \ fonts-freefont-ttf \ fontconfig \ dbus \ openssh-client \ sendmail \ libfreetype6-dev \ libjpeg62-turbo-dev \ icu-devtools \ libicu-dev \ libmcrypt4 \ libmcrypt-dev \ libpng-dev \ zlib1g-dev \ libxml2-dev \ libzip-dev \ libonig-dev \ graphviz \ libcurl4-openssl-dev \ pkg-config \ libldap2-dev \ libpq-dev \ && pecl install mongodb \ && echo "extension=mongodb.so" > /usr/local/etc/php/conf.d/mongodb-ext.ini RUN docker-php-ext-configure intl --enable-intl && \ docker-php-ext-configure gd --with-freetype --with-jpeg && \ docker-php-ext-install -j$(nproc) gd && \ docker-php-ext-install pdo \ pgsql pdo_pgsql \ mysqli pdo_mysql \ intl iconv mbstring \ zip pcntl \ exif opcache \ && docker-php-source delete RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
PHP-FPM 8.0 Docker Image (base image) [multi-arch]
License
devilbox/docker-php-fpm-8.0
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Available Architectures: amd64 , i386 , arm64 , arm/v7 , arm/v6
This repository will provide you a fully functional PHP-FPM 8.0 Docker image built from official sources nightly. It provides the base for Devilbox PHP-FPM Docker images.
🐱 GitHub: devilbox/docker-php-fpm-8.0
docker pull devilbox/php-fpm-8.0
The following Docker image tags are rolling releases and are built and updated every night.
Docker Tag | Git Ref | Available Architectures |
---|---|---|
latest | master | amd64 , i386 , arm64 , arm/v7 , arm/v6 |
The following Docker image tags are built once and can be used for reproducible builds. Its version never changes so you will have to update tags in your pipelines from time to time in order to stay up-to-date.
Docker Tag | Git Ref | Available Architectures |
---|---|---|
git: | amd64 , i386 , arm64 , arm/v7 , arm/v6 |
🛈 Where refers to the chosen git tag from this repository.
PHP-FPM listening port 9000
Dockerize your PHP application with Nginx and PHP8-FPM
How do I build a small web server with Nginx and PHP8 FPM using Docker Compose?
If you’re new to Docker, I recommend reading the numerous “What is Docker?” and “Getting Started with Docker” articles and tutorials before returning here.
Because you’re still reading, I’ll presume you’re familiar with Docker and wish to run your PHP applications in containers. After all, who wants to deal with installing all of the dependencies on their own workstation or managing a slew of virtual machines for their numerous projects?
We will deploy a simple PHP application using the official Docker repositories for PHP and Nginx. There are several Docker repositories that combine PHP-FPM with Nginx, but if you rely only on the official repositories, you are absolutely on the safe side and right way.
First, install Docker on your machine if you haven’t already done so. The second requirement is to install Docker Compose. We have our necessary tools and the target in mind.
Nginx setup
Based on our requirements, Nginx will be a container. This container will run the official Nginx image. Since we are using Docker Compose, we will now create the following docker-compose.yml file. This YAML will run the latest Nginx image and set port 80 to port 8080:
version: '3.9' services: web: image: nginx:latest ports: - '8080:80'
Now we can run the container.
Now you should see the welcome page of Nginx on port 8080 via localhost or the IP of your local machine, via a browser of your choice.
Now that we have a running web server, let’s configure it a bit more. First, we need to update the docker-compose.yml file to mount a local directory that we need inside our Nginx container. I’ll use a folder called src, which is in the same directory as our docker-compose.yml file.
version: '3.9' services: web: image: nginx:latest ports: - '8080:80' volumes: - ./src:/var/www/html
The next step is to let Nginx know that this folder exists.
Let’s create the following default.conf at the same level as the docker-compose.yml file:
server index index.html; server_name phpfpm.local; error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; root /var/www/html; >
We’ll take a look at what we’re doing here in the first place. The index.html will be our default index, the server name is phpfpm.local and it should point (Update your hosts file if necessary) to your Docker environment (Linux: localhost, Mac or Windows: Local IP). We still set the logs in case of access or error, so that later we can see the logs in our Docker compose log as well. Finally, we specify the root folder that we mounted in the container.
For this extension to take effect, we need to make one more change to our docker-compose.yml file:
version: '3.9' services: web: image: nginx:latest ports: - '8080:80' volumes: - ./src:/var/www/html - ./default.conf:/etc/nginx/conf.d/default.conf
This adds the default.conf to the directory where Nginx looks for configuration files to include. You can now place an index.html file with any content in the src folder.
We start our container again:
Now look at the content of the index.html in your browser under phpfpm.local:8080.
Add PHP FPM
Now that our Nginx web server is up and running, we can bring PHP into play. First, we get the official PHP8-FPM repo and link it to our Nginx container.
The following should be noted: PHP runs in its own environment (container) and has no access to the code. We need to mount the src folder in the PHP container as well. This way Nginx will be able to serve all static files and PHP will be able to find its files to interpret.
Our docker-compose.yml should now look like this:
version: '3.9' services: web: image: nginx:latest ports: - '8080:80' volumes: - ./src:/var/www/html - ./default.conf:/etc/nginx/conf.d/default.conf links: - php-fpm php-fpm: image: php:8-fpm volumes: - ./src:/var/www/html
Next, you need to configure Nginx to use the PHP FPM container to interpret PHP files.
server index index.php index.html; server_name phpfpm.local; error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; root /var/www/html; location ~ \.php$ try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass php-fpm:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; > >
To test our changes, we rename the index.html file to index.php and replace its contents:
We go back to our browser. After a refresh, we see the coveted PHP info.
Now you can run any simple PHP application using Docker containers, using the official images for Nginx and PHP.
This guide and configuration, should never be used on a production server and is not an example of best practice. This post is intended as an introduction to Docker Compose for beginners.
you want to make a local domain on your private network accessible to other devices or services, carefully read this article: How to easily assign a static local domain to a Raspberry Pi?