FROM python3
LABEL maintainer="Disassembler <disassembler@dasm.cz>"

RUN \
 # Install NodeJS runtime
 apk --no-cache add nodejs

RUN \
 # Install runtime dependencies
 apk --no-cache add bash coreutils libffi libjpeg-turbo libpq

RUN \
 # Install build dependencies
 apk --no-cache add --virtual .deps build-base git libffi-dev libjpeg-turbo-dev libxml2-dev libxslt-dev ncurses npm patch postgresql-dev python3-dev sudo \
 # Download GNU Health
 && wget http://ftp.gnu.org/gnu/health/gnuhealth-3.2.10.tar.gz -O /tmp/gnuhealth.tgz \
 && tar xzf /tmp/gnuhealth.tgz -C /srv \
 && mv /srv/gnuhealth-3.2.10 /srv/gnuhealth \
 && rm -f /tmp/gnuhealth.tgz \
 # Clone Sao (Tryton web client) repository
 && git clone -b 4.2 --single-branch --depth 1 https://github.com/tryton/sao /srv/gnuhealth/sao \
 # Create OS user
 && addgroup -S -g 8008 gnuhealth \
 && adduser -S -u 8008 -h /srv/gnuhealth -s /bin/bash -g gnuhealth -G gnuhealth gnuhealth \
 && chown -R gnuhealth:gnuhealth /srv/gnuhealth \
 # Install GNU Health
 && cd /srv/gnuhealth \
 && sudo -u gnuhealth ./gnuhealth-setup install \
 # Hackfix template1 database lock
 && sed -i 's/template1/gnuhealth/g' /srv/gnuhealth/gnuhealth/tryton/server/trytond-4.2.15/trytond/backend/postgresql/database.py \
 # Install Sao (Tryton web client) dependencies
 && cd /srv/gnuhealth/sao \
 && sudo -u gnuhealth npm install grunt grunt-cli grunt-contrib-concat grunt-contrib-jshint grunt-contrib-uglify grunt-contrib-less grunt-po2json \
 && sudo -u gnuhealth npm install --production \
 && sudo -u gnuhealth ./node_modules/.bin/grunt \
 # Cleanup
 && apk --no-cache del .deps \
 && find /srv/gnuhealth -name '.git*' -exec rm -rf {} + \
 && rm -rf /usr/local/share/.cache

VOLUME ["/srv/gnuhealth/gnuhealth/tryton/server/config"]
EXPOSE 8080

USER gnuhealth
ENV PATH=/srv/gnuhealth/gnuhealth/tryton/server/trytond-4.2.15/bin:${PATH} \
    TRYTOND_CONFIG=/srv/gnuhealth/gnuhealth/tryton/server/config/trytond.conf \
    PYTHONPATH=/srv/gnuhealth/gnuhealth/tryton/server/trytond-4.2.15:/srv/gnuhealth/gnuhealth/tryton/server/config
CMD ["trytond", "--verbose"]
