Cette image se base sur l'image httpd:2.4.
On y copie les fichiers statiques du frontend (lesquels doivent se trouver dans le dossier frontend-dist à la construction de l'image).
On y copie la configuration Apache (laquelle doit se nommer httpd.conf à la construction de l'image) ce qui a pour effet d'écraser la configuration par défaut présente dans l'image.
Voir plus bas pour plus d'information sur la configuration Apache.
On y copie les certificats (lesquels doivent se trouver dans le dossier certs et se nommer server.crt et server.key) pour permettre le HTTPS.
Si les clés ne sont pas correctement copiées, l'image va quitter tout de suite au lancement: La configuration Apache indique la nécéssité des clés pour continuer.
On expose ensuite les ports 80 et 443, respectivement HTTP et HTTPS.
La documentation de l'image de base se trouve ici: https://hub.docker.com/_/httpd/
Comme indiqué dans le paragraphe "Configuration" de la documentation de l'image de base, la configuration d'Apache se trouve dans l'image au chemin suivant: /usr/local/apache2/conf/httpd.conf.
Pour copier la configuration de base afin de la consulter et de la modifier pour en faire la configuration voulue avant de l'envoyer à nouveau dans l'image, la solution suivante a été utilisée:
Lien d'une solution SO: https://stackoverflow.com/a/22050116/4032282
docker cp <containerId>:/file/path/within/container /host/path/target
Il faut pour celà que le container soit lancé.
Il est apparement possible de monter une image en container, sans pour autant la lancer, avec la commande docker create <nom de l'image>.
Ce post SO compare docker run et docker start: https://stackoverflow.com/questions/37744961/docker-run-vs-create
Les réponses suivantes sont interessantes:
Il suffit de monter l'image de la manière suivante: docker exec -it <mycontainer> bash.
En plus de l'indication donnée dans le paragraphe "SSL/HTTPS" de la documentation de l'image de base, qui indique qu'il faut décommenter la ligne #Include conf/extra/httpd-ssl.conf, deux autres modules sont à décommenter comme indiqué dans ce commentaire GitHub: acmesh-official/acme.sh#214 (comment)
Il s'agit des lignes suivantes:
LoadModule ssl_module modules/mod_ssl.soLoadModule socache_shmcb_module modules/mod_socache_shmcb.so
Pour pouvoir activer la redirection de toutes les recherches sur le front-end Angular, il faut également activer le module de ré-écriture d'url: LoadModule rewrite_module modules/mod_rewrite.so.
Dans le bloc suivant:
<Directory "/usr/local/apache2/htdocs">
[...]
</Directory>
Il faut ajouter les lignes suivantes:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>