Mediante dos contenedores levantar un servidor apache configurado con Php7 y un contenedor para postgresql con persistencia mediante un volumen de datos:
Preparar la imagen con apache y php7
Estructura del directorio

Crear el archivo Dockerfile
FROM webdevops/php-apache:alpine
RUN apk update && apk add build-base
RUN apk add php7-pdo_pgsql
A partir de una imagen de «webdevops/php-apache:alpine», procedemos a actualizar los paquetes (2) y añadir compatibilidad con php7 (3)
Crear la imagen
docker build -t apache7php .
Crear docker-compose.yml
version: '3'
services:
db:
image: postgres:latest
ports:
- "5432:5432"
networks:
- overlay
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: 123456
volumes:
- ./sql:/sql
- postgres-data:/var/lib/postgresql/data
web:
image: apache7php:latest
ports:
- "80:80"
volumes:
- ../intranet:/app
- ./php/02_pdo_pgsql.ini:/etc/php7/conf.d/02_pdo_pgsql.ini
- ./http/vhost.conf:/opt/docker/etc/httpd/vhost.conf
links:
- db
networks:
- overlay
volumes:
postgres-data:
networks:
overlay:
(1) versión de composer
(2) Area de servicios
(3) Etiqueta para contenedor de bdd
(4) Imagen de referencia
(5) puertos
(7) Es necesario establecer una red (característica de la versión 3)
(8) Variable de ambiente
(12) Volumenes que comparte
(13) Carpeta «sql» para compartir respaldos de las bdd
(14) volumen para persistencia de las bdd
(16) Etiqueta para contenedor de servidor web
(17) Referencia a imagen recién creada
(18) Puertos
(20) Volumenes
(21) Carpeta que sera publicada en el sevidor
(22) Archivo de configuración que habilita pdo_pgsql
(23) Archivo de configuración para servidores virtuales
(24) Referencia a contenedor de bdd
(26) Referencia a red
(29) Area de volumenes
(30) Volumen para persistencia de bases de datos
(32) Area para redes
Archivos de configuración
02_pdo_pgsql.ini
extension=pdo_pgsql.so
vhost.conf
#######################################
# Vhost
#######################################
<VirtualHost *:80>
ServerName docker.vm
ServerAlias *.vm
DocumentRoot "/app/public"
UseCanonicalName Off
<IfVersion < 2.4>
Include /opt/docker/etc/httpd/vhost.common.d/*.conf
</IfVersion>
<IfVersion >= 2.4>
IncludeOptional /opt/docker/etc/httpd/vhost.common.d/*.conf
</IfVersion>
</VirtualHost>
<VirtualHost *:443>
ServerName docker.vm
ServerAlias *.vm
DocumentRoot "/app"
UseCanonicalName Off
<IfVersion < 2.4>
Include /opt/docker/etc/httpd/vhost.common.d/*.conf
</IfVersion>
<IfVersion >= 2.4>
IncludeOptional /opt/docker/etc/httpd/vhost.common.d/*.conf
</IfVersion>
Include /opt/docker/etc/httpd/vhost.ssl.conf
</VirtualHost>
Ejecutar
$ docker-compose up