summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2020-01-12 15:00:16 +0100
committerYorhel <git@yorhel.nl>2020-01-12 15:02:30 +0100
commit5fd5479be1b72b5ebcdf44d320c64ac3f61b70a7 (patch)
tree6e873c2d700f04127e5013f94b2f1f02cbff1b55
parent3b5ef488d4ed676134d65c4118097dd290cc9013 (diff)
Docker: Switch to Alpine
Main reason is because I'm more familiar with it, it has less weird surprises than Ubuntu (well, apart from musl + busybox, but that only helps increase VNDB's portability) and it's easier to update to later software versions. Current image comes with PostgreSQL 12 and Perl 5.30, which I will no doubt want to use in the future.
-rw-r--r--Dockerfile57
-rw-r--r--Makefile2
-rwxr-xr-xutil/docker-init.sh30
3 files changed, 37 insertions, 52 deletions
diff --git a/Dockerfile b/Dockerfile
index 6ac0e4f0..5150a9b7 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,46 +1,35 @@
-FROM ubuntu:bionic
+FROM alpine:3.11
MAINTAINER Yoran Heling <contact@vndb.org>
-RUN apt-get update \
- && apt-get install -y locales \
- && localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8
-
-ENV LANG en_US.utf8
-
-RUN apt-get install -y tzdata \
- && apt-get install -y --no-install-recommends \
- build-essential \
- cpanminus \
+RUN apk add --no-cache \
+ build-base \
curl \
git \
graphviz \
imagemagick \
- libalgorithm-diff-xs-perl \
- libanyevent-http-perl \
- libanyevent-irc-perl \
- libanyevent-perl \
- libcrypt-urandom-perl \
- libdbd-pg-perl \
- libhttp-server-simple-perl \
- libimage-magick-perl \
- libjson-xs-perl \
- libperlio-gzip-perl \
- libpq-dev \
- libtext-multimarkdown-perl \
- libxml-parser-perl \
+ imagemagick-perlmagick \
+ perl-anyevent \
+ perl-app-cpanminus \
+ perl-dbd-pg \
+ perl-dev \
+ perl-json-xs \
+ perl-module-build \
+ perl-xml-parser \
postgresql \
- && cpanm -vn \
+ postgresql-dev \
+ zlib-dev \
+ && cpanm -nq \
+ Algorithm::Diff::XS \
+ AnyEvent::HTTP \
+ AnyEvent::IRC \
AnyEvent::Pg \
Crypt::ScryptKDF \
- SQL::Interp
-
-# Get TUWF from Git; I tend to experiment with VNDB before releasing new versions to CPAN.
-# Get Elm from the binaries.
-RUN cd /root \
- && git clone git://g.blicky.net/tuwf.git \
- && cd tuwf \
- && perl Build.PL \
- && ./Build install \
+ Crypt::URandom \
+ HTTP::Server::Simple \
+ PerlIO::gzip \
+ SQL::Interp \
+ Text::MultiMarkdown \
+ git://g.blicky.net/tuwf.git \
&& curl -sL https://github.com/elm/compiler/releases/download/0.19.1/binary-for-linux-64-bit.gz | zcat >/usr/bin/elm \
&& chmod 755 /usr/bin/elm \
&& touch /var/vndb-docker-image
diff --git a/Makefile b/Makefile
index c50a5cda..60f36ed2 100644
--- a/Makefile
+++ b/Makefile
@@ -111,7 +111,7 @@ static/f/vndb.min.js: static/f/vndb.js
# Order of JS files matters, so we read an '//order:x' comment from the files and sort by that.
# Files without that comment are assumed to have '//order:4'.
# (This trick will not work if we ever add JS files generated by this Makefile)
-JS_FILES=$(shell find elm \! -path 'elm/elm-stuff/*' -name '*.js' -exec sh -c "echo \`grep -Po '(?<=^//order:)[0-9]' \"{}\" || echo 4\` \"{}\"" \; | sort | sed 's/..//')
+JS_FILES=$(shell find elm \! -path 'elm/elm-stuff/*' -name '*.js' -exec sh -c "echo \`grep -Eo '^// *order: *[0-9]+' \"{}\" || echo 4\` \"{}\"" \; | sed -E 's/\/\/ *order: *//' | sort | sed 's/..//')
ELM_FILES=elm/*.elm elm/*/*.elm
ELM_MODULES=$(shell grep -l '^main =' ${ELM_FILES} | sed 's/^elm\///')
diff --git a/util/docker-init.sh b/util/docker-init.sh
index d6994583..7555fe51 100755
--- a/util/docker-init.sh
+++ b/util/docker-init.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
if ! test -f /var/vndb-docker-image; then
echo "This script should only be run from within the VNDB docker container."
@@ -18,27 +18,23 @@ mkdevuser() {
USER_UID=`stat -c '%u' /var/www`
USER_GID=`stat -c '%g' /var/www`
if test $USER_UID -eq 0; then
- groupadd devgroup
- useradd -m -s /bin/bash devuser
+ addgroup devgroup
+ adduser -s /bin/sh devuser
else
- groupadd -g $USER_GID devgroup
- useradd -u $USER_UID -g $USER_GID -m -s /bin/bash devuser
+ addgroup -g $USER_GID devgroup
+ adduser -s /bin/sh -u $USER_UID -G devgroup -D devuser
fi
-
- echo 'LANG=en_US.UTF-8' >>/home/devuser/.profile
- echo 'export LANG' >>/home/devuser/.profile
- chown devuser:devgroup -R /var/run/postgresql/
+ install -d -o devuser -g devgroup /run/postgresql
}
# Should run as devuser
pg_start() {
- if [ ! -d /var/www/data/docker-pg/10 ]; then
- mkdir -p /var/www/data/docker-pg/10
- /usr/lib/postgresql/10/bin/pg_ctl initdb -D /var/www/data/docker-pg/10
+ if [ ! -d /var/www/data/docker-pg/12 ]; then
+ mkdir -p /var/www/data/docker-pg/12
+ initdb -D /var/www/data/docker-pg/12 --locale en_US.UTF-8 -A trust
fi
- echo 'local all all trust' >/var/www/data/docker-pg/10/pg_hba.conf
- /usr/lib/postgresql/10/bin/pg_ctl -D /var/www/data/docker-pg/10 -l /var/www/data/docker-pg/10/logfile start
+ pg_ctl -D /var/www/data/docker-pg/12 -l /var/www/data/docker-pg/12/logfile start
cd /var/www
if test -f data/docker-pg/vndb-init-done; then
@@ -66,10 +62,10 @@ pg_start() {
echo "ALTER ROLE vndb_site LOGIN" | psql postgres
echo "ALTER ROLE vndb_multi LOGIN" | psql postgres
- if [[ $opt =~ ^[Ee] ]]
+ if [ $opt = e ]
then
psql -U vndb -f dump.sql
- elif [[ $opt =~ ^[Yy] ]]
+ elif [ $opt = y ]
then
curl -L https://dl.vndb.org/dump/vndb-dev-latest.tar.gz | tar -xzf-
psql -U vndb -f dump.sql
@@ -90,7 +86,7 @@ pg_start() {
devshell() {
cd /var/www
util/vndb-dev-server.pl
- bash
+ sh
}