Saltar al contenido

Ejecución de hosts virtuales en el contenedor docker apache

Luego de de esta prolongada recopilación de datos dimos con la solución esta preocupación que presentan algunos de nuestros usuarios. Te compartimos la solución y nuestro deseo es resultarte de mucha ayuda.

Solución:

Gracias a @David Maze, encontré el problema. Agregué las directivas de escucha en la parte superior de mi configuración de Apache y cambié los números de puerto.

docker-compose.yml

version: '3.2'
services:
  php-apache:
    build:
      context: ./apache-php
    ports:
      - 80:80
      - 8060:8060

    volumes:
      - ./DocumentRoot:/var/www/html:z

Configuración de apache

Listen 80
Listen 8060


    DocumentRoot /var/www/html/api
    ErrorLog $APACHE_LOG_DIR/error.log
    CustomLog $APACHE_LOG_DIR/access.log combined



    ServerAdmin [email protected]
    DocumentRoot /var/www/html
    ErrorLog $APACHE_LOG_DIR/error.log
    CustomLog $APACHE_LOG_DIR/access.log combined

Estructura de directorios

apache-php
   ¬ sqlite3_ext
   ¬ 000-default.conf (Apache config)
   ¬ Dockerfile
   ¬ php.ini
docker-compose.yml

Dockerfile

FROM php:7.2.1-apache
RUN docker-php-ext-install pdo pdo_mysql mysqli

# Enable apache rewrite
COPY 000-default.conf /etc/apache2/sites-available/000-default.conf

#Install spatialite and create symlink for libproj.so.0
COPY sqlite3_ext /etc/sqlite3_ext
RUN apt-get update && apt-get -y install gdal-bin
RUN ln -s /usr/lib/x86_64-linux-gnu/libproj.so.12 /usr/lib/x86_64-linux-gnu/libproj.so.0

#Install gd library for images
RUN apt-get install libpng-dev libfreetype6-dev libjpeg62-turbo-dev -qy 
    && apt-get clean 
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ 
    && docker-php-ext-install gd

#Copy php ini
COPY php.ini /usr/local/etc/php/php.ini
RUN a2enmod rewrite

Aquí hay una solución, paso a paso:

Paso 1:

Agregar/Actualizar extra_hosts, hostname, domainname y en docker-compose.yml y en mi caso lo estoy ejecutando sobre PORT 80.

Así es mi php el servicio parece en docker-compose.yml expediente.

php:
   build: .
   image: php:7.2-apache
   working_dir: /var/www/html
   volumes:
     - ./:/var/www/html
     - ./php.ini:/usr/local/etc/php/php.ini
   extra_hosts:
     - "lara.local:127.0.0.1"
   hostname: lara.local
   domainname: local 
   ports:
     - 80:80  
   environment:
     - "DB_PORT=3306"
     - "DB_HOST=database"

Paso 2:

Actualiza tu hosts archivo con la siguiente línea:

127.0.0.1 lara.local

Paso 3: Pruebe nuestro nombre de host ejecutando este comando

docker exec -it  hostname

Si ves salida lara.local ¡Entonces, ya puedes irte!

Paso 4: Reconstruir aplicación

docker-compose build

Paso 5: Inicie los servicios y verifique que la aplicación se esté ejecutando en http://lara.local

docker-compose up -d

Nota: Si está utilizando un puerto diferente, por ejemplo 8080 entonces seria http://lara.local:8080

PD. Si desea cambiar el DocumentRoot luego ssh a su contenedor y
cd /etc/apache2/sites-available/000-default.conf y cambie la ruta de DocumentRoot según sus necesidades.

Sección de Reseñas y Valoraciones

Te invitamos a sustentar nuestra función mostrando un comentario o puntuándolo te estamos eternamente agradecidos.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 4)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *