From 5ec428a0c177025b9c04330ae3f39cbde27a2d81 Mon Sep 17 00:00:00 2001 From: Miguel Date: Thu, 21 Jan 2021 20:59:10 +0100 Subject: add dokcer builds --- docker_builds/docker_ghcup/Dockerfile | 57 +++++++++++++++++ docker_builds/docker_ghcup/README.md | 28 +++++++++ docker_builds/docker_hakyll/Dockerfile | 4 ++ docker_builds/docker_hakyll/README.md | 1 + docker_builds/docker_wordpress_sendmail/Dockerfile | 15 +++++ docker_builds/docker_wordpress_sendmail/README.md | 72 ++++++++++++++++++++++ docker_builds/docker_wordpress_sendmail/php.ini | 2 + docker_builds/docker_wordpress_sendmail/start.sh | 42 +++++++++++++ .../docker_wordpress_sendmail/uploads.ini | 5 ++ 9 files changed, 226 insertions(+) create mode 100644 docker_builds/docker_ghcup/Dockerfile create mode 100644 docker_builds/docker_ghcup/README.md create mode 100644 docker_builds/docker_hakyll/Dockerfile create mode 100644 docker_builds/docker_hakyll/README.md create mode 100644 docker_builds/docker_wordpress_sendmail/Dockerfile create mode 100644 docker_builds/docker_wordpress_sendmail/README.md create mode 100644 docker_builds/docker_wordpress_sendmail/php.ini create mode 100755 docker_builds/docker_wordpress_sendmail/start.sh create mode 100644 docker_builds/docker_wordpress_sendmail/uploads.ini diff --git a/docker_builds/docker_ghcup/Dockerfile b/docker_builds/docker_ghcup/Dockerfile new file mode 100644 index 0000000..4ac21f8 --- /dev/null +++ b/docker_builds/docker_ghcup/Dockerfile @@ -0,0 +1,57 @@ +FROM debian:buster + +ARG GHC_VERSION= +ARG USER=haskeller +ENV PATH="/home/${USER}/.cabal/bin:/home/${USER}/.ghcup/bin:${PATH}" + +RUN echo "Dear Sir or Madam," && \ + echo "" && \ + echo "Welcome to Miguel's Docker Builder." && \ + echo "We are building a fresh Haskell Environment." && \ + echo "" && \ + echo "This Build is parametrized as follows:" && \ + echo "" && \ + echo "GHC_VERSION = ${GHC_VERSION}" && \ + echo "PATH = ${PATH}" && \ + echo "USER = ${USER}" && \ + echo "" && \ + echo "[STEP 1 : INSTALLING DEPS VIA APT]" && \ + echo "" && \ + apt-get update && \ + apt-get install -y \ + curl \ + xz-utils \ + gcc \ + make \ + libtinfo5 \ + libgmp-dev \ + zlib1g-dev && \ + echo "" && \ + echo "[STEP 2 : CREATE USER & HOMEDIR]" && \ + echo "" && \ + useradd -ms /bin/bash ${USER} && \ + echo "" && \ + echo "[STEP 3 : DOWNLOAD AND INSTALL ghcup]" && \ + echo "" && \ + su ${USER} -c "mkdir -p ~/.ghcup/bin" && \ + su ${USER} -c "curl https://gitlab.haskell.org/haskell/ghcup/raw/master/ghcup > ~/.ghcup/bin/ghcup" && \ + su ${USER} -c "chmod +x ~/.ghcup/bin/ghcup" && \ + echo "" && \ + echo "[STEP 4 : INSTALL ghc VIA ghcup]" && \ + echo "" && \ + su ${USER} -c "ghcup install ${GHC_VERSION}" && \ + su ${USER} -c "ghcup set ${GHC_VERSION}" && \ + echo "" && \ + echo "[STEP 5 : INSTALL & UPDATE cabal]" && \ + echo "" && \ + su ${USER} -c "ghcup install-cabal" && \ + su ${USER} -c "cabal update" && \ + su ${USER} -c "cabal new-install cabal-install" && \ + echo "" && \ + echo "[FINISHED! THANK YOU FOR YOUR PATIENCE]" && \ + echo "" + +USER ${USER} +ENV PATH="/home/${USER}/.cabal/bin:/home/${USER}/.ghcup/bin:${PATH}" +RUN cabal install ghcid +RUN cabal install hlint diff --git a/docker_builds/docker_ghcup/README.md b/docker_builds/docker_ghcup/README.md new file mode 100644 index 0000000..74acc0c --- /dev/null +++ b/docker_builds/docker_ghcup/README.md @@ -0,0 +1,28 @@ +# GHC and Cabal via ghcup + +Fresh Haskell developer environment bootstrapped from scratch via ghcup. + +This image is based on debian:buster + +Happy Haskelling! + +## Building + +By default the best known GHC version is used but you can override it: + + sudo docker build --tag miguel/ghcup:8.6.5 --build-arg GHC_VERSION=8.6.5 . + sudo docker build --tag miguel/ghcup:8.6 --build-arg GHC_VERSION=8.6 . + +the default user is `haskeller` but you can override it via the USER build argument + +## Using + +You can use this image as a base for your projects or standalone: + + sudo docker run -it --entrypoint bash miguel/ghcup:8.6 + +## Prebuilt Images and Sources + +Some prebuild images might be found on: https://cloud.docker.com/repository/docker/migueldirty/ghcup + +Dockerfile is hosted here: https://github.com/miguelclean/docker_ghcup diff --git a/docker_builds/docker_hakyll/Dockerfile b/docker_builds/docker_hakyll/Dockerfile new file mode 100644 index 0000000..b454996 --- /dev/null +++ b/docker_builds/docker_hakyll/Dockerfile @@ -0,0 +1,4 @@ +FROM migueldirty/ghcup +ENV LANG C.UTF-8 +ENV LC_ALL C.UTF-8 +RUN cabal install hakyll diff --git a/docker_builds/docker_hakyll/README.md b/docker_builds/docker_hakyll/README.md new file mode 100644 index 0000000..9f79958 --- /dev/null +++ b/docker_builds/docker_hakyll/README.md @@ -0,0 +1 @@ +fresh hakyll install diff --git a/docker_builds/docker_wordpress_sendmail/Dockerfile b/docker_builds/docker_wordpress_sendmail/Dockerfile new file mode 100644 index 0000000..bd1a182 --- /dev/null +++ b/docker_builds/docker_wordpress_sendmail/Dockerfile @@ -0,0 +1,15 @@ +FROM wordpress + +LABEL maintainer="Michal Idziorek " + +RUN apt-get update && apt-get install -y sendmail libjpeg-dev libpng-dev libfreetype6-dev && \ + docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ + docker-php-ext-install gd && \ + a2enmod remoteip + +COPY ./php.ini /usr/local/etc/php/conf.d/php.ini +COPY ./uploads.ini /usr/local/etc/php/conf.d/uploads.ini +COPY ./start.sh /start.sh + +ENTRYPOINT [""] +CMD ["/start.sh"] diff --git a/docker_builds/docker_wordpress_sendmail/README.md b/docker_builds/docker_wordpress_sendmail/README.md new file mode 100644 index 0000000..f0ee554 --- /dev/null +++ b/docker_builds/docker_wordpress_sendmail/README.md @@ -0,0 +1,72 @@ +# ABOUT +This is a simple customization of the official wordpress docker image. + +- GitHub: https://github.com/miguelclean/docker_wordpress_sendmail/ +- Docker Hub: https://hub.docker.com/r/migueldirty/docker_wordpress_sendmail/ + +# FEATURES +- added sendmail functionality +- an increased upload size (to 500M) +- added GD with freetype, lib-jpeg, lib-png +- added RemoteIPHeader config option + +# FILES & PROGRAMMS +The following files and programms are added/installed to the official wordpress image: +- /usr/sbin/sendmail - Mail Transport Agent (installed via apt) +- /usr/local/etc/php/conf.d/php.ini - set sendmail\_path = sendmail -t -i +- /usr/local/etc/php/conf.d/uploads.ini - increase upload size to 500M +- customizing /etc/hosts by adding the FQDN specified with $HOSTS\_FQDN + +# USING THIS IMAGE +You can specify the following in your *docker-compose.yml*: + + build: https://github.com/miguelclean/docker_wordpress_sendmail.git + +You can also use this automatically built image from Docker Hub: + + image: migueldirty/docker_wordpress_sendmail + +# ENVIRONMENT VARIABLES +This customized image requires to specify HOSTS\_FQDN additionally: + + HOSTS_FQDN: www.your-server.com + +Optionally you can set the header name to be used for RemoteIPHaeder in apache. + + Example: REMOTE_IP: X-Real-IP + + +# EXAMPLE CONFIG + +docker-compose.yml for a wordpress & mysql deployment using this image: + + + version: '2' + + services: + db: + image: mysql:5.7 + volumes: + - db_data:/var/lib/mysql + restart: always + environment: + MYSQL_ROOT_PASSWORD: wordpress + MYSQL_DATABASE: wordpress + MYSQL_USER: wordpress + MYSQL_PASSWORD: wordpress + + wordpress: + depends_on: + - db + build: https://github.com/miguelclean/docker_wordpress_sendmail.git + volumes: + - wp_data:/var/www/html + restart: always + environment: + WORDPRESS_DB_HOST: db:3306 + WORDPRESS_DB_PASSWORD: wordpress + HOSTS_FQDN: www.your-server.com + volumes: + db_data: + wp_data: + diff --git a/docker_builds/docker_wordpress_sendmail/php.ini b/docker_builds/docker_wordpress_sendmail/php.ini new file mode 100644 index 0000000..09b3f6e --- /dev/null +++ b/docker_builds/docker_wordpress_sendmail/php.ini @@ -0,0 +1,2 @@ +sendmail_path=sendmail -t -i + diff --git a/docker_builds/docker_wordpress_sendmail/start.sh b/docker_builds/docker_wordpress_sendmail/start.sh new file mode 100755 index 0000000..d585433 --- /dev/null +++ b/docker_builds/docker_wordpress_sendmail/start.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +_term() { + echo " -> Caught SIGTERM signal!" + kill -TERM "$child" 2>/dev/null +} + +echo +echo " == STARTING Miguel's Customized Wordpress Image == " +echo + +echo " 0. Setting SIGTERM Trap..." +trap _term SIGTERM + +echo " 1. Updating /etc/hosts..." +echo " -> Setting hostname to $HOSTS_FQDN" +echo "127.0.0.1 $(hostname) localhost $HOSTS_FQDN" >> /etc/hosts + +echo " 2. Set ServerName (Apache)" +sed -i.bak 's/^ServerName.*//' /etc/apache2/apache2.conf +echo ServerName localhost >> /etc/apache2/apache2.conf + +echo " 3. Restarting sendmail..." +service sendmail restart + +echo " 4. Config RemoteIPHeader (Apache)" +sed -i.bak 's/^RemoteIPHeader.*//' /etc/apache2/apache2.conf +if [ -z "$REMOTE_IP" ]; then + echo " -> RemoteIPHeader not used" +else + echo RemoteIPHeader $REMOTE_IP >> /etc/apache2/apache2.conf + echo " -> $REMOTE_IP" +fi + +echo " 5. Launching Apache ..." +docker-entrypoint.sh apache2-foreground & +child=$! +echo " -> sleeping (pid=$child) ..." +wait "$child" +echo +echo " == STOPPED == " +echo diff --git a/docker_builds/docker_wordpress_sendmail/uploads.ini b/docker_builds/docker_wordpress_sendmail/uploads.ini new file mode 100644 index 0000000..755332d --- /dev/null +++ b/docker_builds/docker_wordpress_sendmail/uploads.ini @@ -0,0 +1,5 @@ +file_uploads = On +memory_limit = 500M +upload_max_filesize = 500M +post_max_size = 500M +max_execution_time = 600 -- cgit v1.2.3