Necesito crear una aplicación docker con solo php y apache como contenedores para ejecutar una aplicación web basada en php. Estoy usando solo archivos YAML de Docker Compose que puedo activar en una interfaz de usuario específica. No trabajo con todas las cosas de la línea de comandos (es un NAS con un sistema operativo basado en Linux modificado donde normalmente evito cualquier actividad en el nivel de la línea de comandos) .
Ambas imágenes de php y apache deben basarse en la última versión y seguramente comunicarse entre sí. La base de datos a utilizar debe ser la MariaDB nativa de la máquina.
He estado probando muchas docenas de variaciones de un archivo YAML de Docker Compose, pero hasta ahora ninguna funciona ni siquiera en las operaciones básicas:
version: "3.1" services: php: image: php:latest working_dir: /root volumes: - /share/Web/myWebApp:/root command: docker-php-ext-install pdo pdo_mysql links: - "web" web: image: httpd:latest volumes: - /share/Web/myWebApp:/usr/local/apache/htdocs ports: - 9500:80 - 9501:443Con el archivo YAML anterior, la aplicación comienza a crearse y el comando php
command: docker-php-ext-install pdo pdo_mysqlhace que aparezca una salida más larga de php, pero una vez que finaliza, el contenedor de php se detiene inmediatamente. Cuando omito este comando, el contenedor ni siquiera se inicia. no estoy seguro de la
working_dirinstrucción para php también. ¿Es esto necesario en absoluto? Si es así, ¿qué tendría que ser, un volumen interno o asignado a un volumen de host (como se indica arriba)?
Sin embargo, el contenedor del servidor web apache se inicia y puede iniciarse mediante la URL del host: 9500, que muestra "Funciona", pero ignora la asignación.
/share/Web/myWebApp:/usr/local/apache/htdocsque he especificado. Solo muestra el archivo INDEX.HTML estático proporcionado por apache. Cuando entro en el contenedor de Apache en ejecución (a través de la línea de comando), puedo moverme al directorio
/usr/local/apache/htdocsy esto, de hecho, contiene todos los archivos HTML y PHP de mi aplicación web, pero cuando ejecuto la URL: PUERTO en el navegador, solo se muestra la corrección INDEX.HTML.
Esta debe ser una pregunta de un millón de veces ya que esta es una configuración muy básica, pero no consigo que funcione. También estoy confundido por las instrucciones de red para Docker Compose. La documentación dice que el uso de
linksestá en desuso, pero de todos modos no es necesario ya que los contenedores pueden comunicarse de forma nativa entre sí, viviendo en la misma red de Docker. En cambio
networksdebería usarse más bien, pero estoy confundido si necesito eso en absoluto.
Si alguien puede tener un ejemplo de un archivo YAM básico que haga el trabajo o darme una pista de lo que está mal en el mío, sería muy apreciado.