Skip to content

Instantly share code, notes, and snippets.

@damien-biasotto
Created July 9, 2016 02:04
Show Gist options
  • Save damien-biasotto/b22baf77d5f298c3cdc034ba72cc0c11 to your computer and use it in GitHub Desktop.
Save damien-biasotto/b22baf77d5f298c3cdc034ba72cc0c11 to your computer and use it in GitHub Desktop.
Docker Compose CakePHP 3 Nginx + PHP-FPM + MailHog + Phpmyadmin

A docker-compose template file.

Kind of lightweight setup using alpine when available (I'm looking at you MySQL). Using jwilder/nginx-proxy to have cool vhosts names.

Sadly We could not use ENVIRONMENT VARIABLES in nginx configuration, so it's not really DRY.

version: '2'
services:
nginx-proxy:
image: jwilder/nginx-proxy
container_name: nginx-proxy
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
web:
image: nginx:alpine
links:
- php
- mail
ports:
- 80
volumes:
- ./config/docker/vhost.conf:/etc/nginx/conf.d/vhost.conf
- ./:/var/www/vhost
environment:
VIRTUAL_HOST: web.vhost.test
php:
ports:
- "9000:9000"
build: ./config/docker/images/fpm
links:
- db
volumes:
- ./:/var/www/vhost
db:
image: mysql:latest
volumes:
- ./.data/db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: "password"
MYSQL_DATABASE: whatever
mail:
image: occitech/alpine-mailhog
ports:
- 8025
environment:
VIRTUAL_HOST: mail.vhost.test
VIRTUAL_PORT: 8025
phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- db
environment:
VIRTUAL_HOST: db.vhost.test
FROM php:fpm-alpine
RUN apk add --no-cache --update icu-libs icu icu-dev
RUN docker-php-ext-install intl pdo pdo_mysql
server {
listen 80;
rewrite ^(.*) http://web.vhost.test$1 permanent;
}
server {
listen 80;
server_name web.vhost.test;
# root directive should be global
root /var/www/vhost/webroot;
index index.php;
access_log /var/www/vhost/logs/nginx-access.log;
error_log /var/www/vhost/logs/nginx-error.log;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment