A collection of customized containers for a Docker web development stack. Where possible the containers are build on top of Alpine Linux for a small footprint.
- ghcr.io/geerteltink/nginx: latest
- ghcr.io/geerteltink/php: 8.0-cli, 8.0-fpm, 8.1-cli, 8.1-fpm, 8.2-cli, 8.2-fpm
- ghcr.io/geerteltink/mysql: latest
- Use a custom [docker compose.yml](docker compose.yml) file to do the work for you. Adjust the settings needed for the project.
- Copy
.env.distto.envand change at least the project id. - Start the container with
docker compose up -d.
- For consistency the source code lives in the
/appdir. - The app is available at http://localhost/.
- MailHog is used to catch emails and can be accessed at http://localhost:8025/.
Use setfacl to set permission on the host
sudo setfacl -Rm g:82:rwX,d:g:82:rwX /home/<username>/projectsSetup permissions for docker so the files can be accessed and deleted. The trick is to use the uid's from the docker processes. www-data/nginx: 82 - docker: 999 - mysql: 28
# Preserve default permissions for new files and folders
sudo setfacl -dR -m u:28:rwx -m u:82:rwx -m u:33:rwx -m u:999:rwx -m u:$(whoami):rwx data
# Set permissions
sudo setfacl -R -m u:28:rwx -m u:82:rwx -m u:33:rwx -m u:999:rwx -m u:$(whoami):rwx dataXdebug is configured so it doesn't start automatically. You need to enable the debug listener in PhpStorm first and enable a session cookie in your Chrome or Firefox browser.
docker build . --file Dockerfile --tag dev
docker run --rm -it tagStart containers
docker compose up -dStart and force rebuilding the containers
docker compose up --buildStop containers
docker compose stopUpdate containers
docker compose pullStream logs from all containers to the console
docker compose logs -t -fStart a terminal for <container_name>
# With docker compose
docker compose run --rm php /bin/bash # Ubuntu/Debian based
docker compose run --rm php /bin/sh # Alpine Linux based
# With docker
docker exec -ti <container_name> /bin/bash # Ubuntu/Debian based
docker exec -ti <container_name> /bin/sh # Alpine Linux basedStats for running containers
docker stats -aShow used space, similar to the unix tool df
docker system dfRemove development junk: unused volumes, networks, exited containers and unused images
docker system prune --force --allList all images
docker imagesList containers
docker psForce stop all containers in PowerShell
docker ps -a -q | ForEach { docker stop $_ }