This repository contains the files needed to quickly get up and running with a local PHP development Docker container. The container uses NGINX & PHP-FPM for the server, MySQL for the database, local volumes for live editing of the files and database, and the composer Global Ray package for connecting with the Ray desktop app for debugging.
Included below are one-time setup instructions for creating a standalone NGINX Reverse Proxy Docker network. The network container will allow you to run multiple local servers simultaneously, all using unique local domain names on the standard 80 (HTTP) or 443 (HTTPS) ports. This removes the need to manage port numbers, gives you clean domains to work from (no appended port number), and manages running your local domains on the HTTPS protocol with self-created TLS certificates.
Depending on what stack you're using and whether you use Ray for debugging, another setup may be a better fit:
Setups without the Global Ray package | Setups with the Global Ray package |
---|---|
NGINX, PHP-FPM & MySQL | NGINX, PHP-FPM, MySQL, & Ray |
WordPress & MySQL | WordPress, MySQL, & Ray |
For all features to work, you must do a one-time setup of the following:
- Install the Docker Nginx Proxy Setup.
- Connect the Docker host with your local machine so Docker can communicate with the Ray desktop app by adding
127.0.0.1 host.docker.internal
to your local machine's /etc/hosts file.
- In the parent directory where you want your project directory nested, run
git clone git@github.com:jacobcassidy/docker-nginx-phpfpm-ray-setup.git
. - Rename the cloned directory from
docker-nginx-phpfpm-ray-setup
to your project name. - Rename the
.env-example
file to.env
. - Update the
.env
file with the values your project will use. - In the
nginx-proxy-base/certs
directory you created in step one of the First Time Setup instructions above, create the TLS certificates needed for the HTTPS protocol using the command:mkcert yourlocaldomain.tld
. Ensure you replace "yourlocaldomain.tld" with the local domain name you specified in your.env
file. - Rename the created TLS certificates:
FROM TO yourlocaldomain.tld-key.pem yourlocaldomain.tld.key yourlocaldomain.tld.pem yourlocaldomain.tld.crt - Add yourlocaldomain.tld to your local machine's hosts file. This can be done on macOS with:
sudo vim /etc/hosts
and adding127.0.0.1 yourlocaldomain.tld
to the list (make sure to replace yourlocaldomain.tld with your actual domain name). - Open the Docker Desktop app so the Docker engine is on.
- Build the docker container with:
docker compose up -d
(run this command in theyour-project-name/docker
directory). This will create your server and add the/storage/mysql
directory in the aforementioned directory. - Replace this README content with your project's README content (you can view the original README here).
- Optional: Remove the cloned docker-nginx-phpfpm-ray-setup .git directory with:
rm -rf .git
(run this from your project directory). - Optional: Initialize a new git repository for your project with:
git init
. - Optional: If you will be using a GitHub remote repo, create and connect to it now.
- Open your browser to the local domain specified in your
.env
file and check that everything is loading correctly.
If you come across any issues, please feel free to report them here.