Copia

 Para habilitar el módulo `mod_ssl` en Apache dentro del contenedor de Docker, sigue los siguientes pasos:


**Paso 1: Actualizar el Dockerfile**


Modifica tu archivo `Dockerfile` para habilitar el módulo `mod_ssl` e instalar la utilidad `openssl`. Agrega las líneas relevantes en la sección apropiada de tu archivo `Dockerfile` como se muestra a continuación:


```Dockerfile

FROM php:7.3-apache


# Instalar dependencias y extensiones necesarias para MediaWiki

RUN apt-get update && apt-get install -y \

    libicu-dev \

    libzip-dev \

    unzip \

    && docker-php-ext-install -j$(nproc) intl mysqli opcache zip


# Habilitar mod_rewrite y mod_ssl

RUN a2enmod rewrite ssl


# Instalar openssl

RUN apt-get install -y openssl


# Copiar el archivo de configuración personalizado de Apache y de Apache SSL

COPY ./000-default.conf /etc/apache2/sites-available/000-default.conf

COPY ./default-ssl.conf /etc/apache2/sites-available/default-ssl.conf


# Instalar MediaWiki

ARG MEDIAWIKI_VERSION=1.35.2

RUN curl -L https://releases.wikimedia.org/mediawiki/${MEDIAWIKI_VERSION%.*}/mediawiki-${MEDIAWIKI_VERSION}.tar.gz | tar xz \

    && mv mediawiki-${MEDIAWIKI_VERSION} /var/www/html


# Configurar los permisos de los directorios

RUN chown -R www-data:www-data /var/www/html

```


**Paso 2: Crear el archivo de configuración SSL para Apache**


Crea un archivo llamado `default-ssl.conf` en el mismo directorio que el `Dockerfile`. Agrega el siguiente contenido al archivo:


```apache

<IfModule mod_ssl.c>

    <VirtualHost _default_:443>

        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/html


        <Directory /var/www/html>

            Options FollowSymLinks

            AllowOverride All

            Require all granted

        </Directory>


        ErrorLog ${APACHE_LOG_DIR}/error.log

        CustomLog ${APACHE_LOG_DIR}/access.log combined


        SSLEngine on

        SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem

        SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

    </VirtualHost>

</IfModule>

```


Este archivo de configuración usa un certificado autofirmado "snakeoil" para SSL. No es apropiado para un entorno de producción, pero es útil para propósitos de prueba y desarrollo. Para un entorno de producción, deberás obtener un certificado SSL válido de una autoridad de certificación (CA) y configurar las rutas adecuadas en `SSLCertificateFile` y `SSLCertificateKeyFile`.


**Paso 3: Habilitar el sitio SSL en el contenedor**


Modifica tu archivo `Dockerfile` nuevamente y agrega la siguiente línea justo después de la línea `RUN a2enmod rewrite ssl` para habilitar el sitio SSL en el contenedor:


```Dockerfile

RUN a2ensite default-ssl

```


**Paso 4: Exponer el puerto 443 en docker-compose.yml**


Modifica tu archivo `docker-compose.yml` y agrega el puerto 443 a la sección `ports` del servicio `mediawiki`:


```yaml

services:

  mediawiki:

    build:

      context: .

      args:

        MEDIAWIKI_VERSION: 1.35.2

    ports:

      - 8080:80

      - 8443:443

    volumes:

      - ./mediawiki-images:/var/www/html/images

      - ./LocalSettings.php:/var/www/html/LocalSettings.php

    depends_on:

      - database

```


Esto expone el puerto 443 en el host como 8443.


**Paso 5: Reconstruir e iniciar los contenedores**


Reconstruye e inicia los contenedores usando `docker-compose` con los siguientes comandos:


```bash

docker-compose down

docker-compose build

docker-compose up -d

```


Con estos cambios, tu contenedor Apache ahora debería tener habilitado el módulo `mod_ssl`, y podrás acceder a tu instancia de MediaWiki a través de HTTPS en `https://localhost:8443`. Ten en cuenta que, como se mencionó anteriormente, el certificado SSL utilizado aquí es autofirmado y no es adecuado para un entorno de producción. En un entorno de producción, asegúrate de obtener e instalar un certificado SSL válido de una Autoridad de Certificación (CA) de confianza.

Comentarios

Entradas populares de este blog

Migración

Docker alpine

Questasim