====== Apache httpd von Docker ====== siehe https://hub.docker.com/_/httpd ==== Hinweis für Podman ==== Für podmand ''docker'' durch ''podman'' ersetzen und alle Images ggf. mit ''docker.io/'' prefixen. ===== persistente Daten für den Container anlegen ===== mkdir -p /srv/docker/httpd/htdocs cd /srv/docker/httpd Hello World! Hello World ===== erster Start ===== docker run -d --name hello-httpd -p 8888:80 -v '/srv/docker/httpd/htdocs:/usr/local/apache2/htdocs/' httpd:2.4 -> http://localhost:8888 curl http://localhost:8888 Betreten der Instanz: docker exec -it hello-httpd /bin/bash ls conf/httpd.conf exit Instanz löschen: docker stop hello-httpd docker rm hello-httpd ===== Start mit eigener Konfigurationsdatei ===== ==== mit Konfigurationsdatei im Volume ==== Extrahieren der Konfigurationsdatei: cd /srv/docker/httpd docker run --rm httpd:2.4 cat /usr/local/apache2/conf/httpd.conf > httpd.conf Konfigurationsdatei bearbeiten: sed -i.bak 's/^Listen 80/Listen 8001/' httpd.conf diff httpd.conf{,.bak} Starten: docker run -d --name httpd_8001 -p 8888:8001 -v '/srv/docker/httpd/htdocs:/usr/local/apache2/htdocs/' -v '/srv/docker/httpd/httpd.conf:/usr/local/apache2/conf/httpd.conf' httpd:2.4 -> http://localhost:8888 Löschen: docker stop httpd_8001 docker rm httpd_8001 ==== mit Dockerfile ==== Problem: im Image ''httpd:2.4'' steht ''EXPOSE 80/tcp''. Um das zu ändern, muss man ein neues Image erzeugen und alle relevanten Instruktionen neu setzen. (Oder man ignoriert es, ''EXPOSE'' dient nur der Dokumentation.) docker image history --no-trunc httpd:2.4 -> alle Anweisungen rauskopieren, die im neuen Image enthalten sein sollen FROM httpd:2.4 AS build RUN sed -i.bak 's/^Listen 80/Listen 8001/' /usr/local/apache2/conf/httpd.conf FROM scratch COPY --from=build / / ENV HTTPD_PREFIX=/usr/local/apache2 ENV PATH=/usr/local/apache2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ENV HTTPD_VERSION=2.4.66 ENV HTTPD_SHA256=94d7ff2b42acbb828e870ba29e4cbad48e558a79c623ad3596e4116efcfea25a ENV HTTPD_PATCHES= CMD ["httpd-foreground"] EXPOSE 8001/tcp docker build -t='ingo/apache:0.0.1' docker container run -d -P ingo/apache:0.0.1 docker container ps -> ''->8001/tcp''