【Docker】【Laradock】How to add SSL to APACHE in laradock

Here's the solution

1) Add below to your laradock -> apache2 -> Dockerfile

#ssl certificate
RUN openssl genrsa -out "/etc/ssl/private/mysite.key" 2048 \
    && openssl req -new -key "/etc/ssl/private/mysite.key" -out "/etc/ssl/certs/mysite.csr" -subj "/CN=localhost/O=LGS/C=JP" \
    && openssl x509 -req -days 365 -in "/etc/ssl/certs/mysite.csr" -signkey "/etc/ssl/private/mysite.key" -out "/etc/ssl/certs/mysite.crt"

RUN sed -i 's!/var/www/html!/var/www/html/public!g' /etc/apache2/sites-available/default-ssl.conf \
    && sed -i 's!/etc/ssl/certs/ssl-cert-snakeoil.pem!/etc/ssl/certs/mysite.crt!g' /etc/apache2/sites-available/default-ssl.conf \
    && sed -i 's!/etc/ssl/private/ssl-cert-snakeoil.key!/etc/ssl/private/mysite.key!g' /etc/apache2/sites-available/default-ssl.conf
    
RUN a2enmod ssl \
    && a2ensite default-ssl.conf

2) In your laradock -> docker-compose.yml, make sure apache2 ports accept 443

      ports:
        - "${APACHE_HOST_HTTP_PORT}:80"
        - "${APACHE_HOST_HTTPS_PORT}:443"

if old version or somehow you do not have 443 in ports, you can simply add it like below.

    ports:
      - 80:80
      - 443:443

3) build and up, and you good to go

docker-compose build

Have a happy docker life!