Compare commits

..

18 Commits

Author SHA1 Message Date
Erik Huelsmann
d00c9484d6 * Automatic Dockerfile update by release process 2020-03-07 14:31:26 +00:00
Erik Huelsmann
51fa9951e5 Add formatting to README.md 2020-02-10 23:44:38 +01:00
Erik Huelsmann
e9aeff6039 Change manual setup section to prevent suggested simplicity
We've seen multiple users thinking that simple creation of two containers
is enough, whereas this isn't the case: at the very least, the deprecated
`--link` docker option must be used, but more compliant is the use of
custom networks and bridges. Docker-compose sets all that up automatically,
so don't suggest going without docker-compose is simpler.
2020-02-10 23:29:27 +01:00
Erik Huelsmann
2e30a4ecd5 * Automatic Dockerfile update by release process 2020-02-10 20:06:27 +00:00
Erik Huelsmann
ddd9d001c9 * Automatic Dockerfile update by release process 2020-01-22 21:31:24 +00:00
Erik Huelsmann
f3d05897b9 * Automatic Dockerfile update by release process 2019-12-26 17:32:07 +00:00
Erik Huelsmann
5cb61f5a69 * Automatic Dockerfile update by release process 2019-11-29 10:31:09 +00:00
Erik Huelsmann
86ad5c0b64 * Automatic Dockerfile update by release process 2019-11-15 18:48:18 +00:00
Erik Huelsmann
76dc35fa75 * Automatic Dockerfile update by release process 2019-11-02 15:31:25 +00:00
Erik Huelsmann
2846d97696 * Automatic Dockerfile update by release process 2019-10-18 11:53:45 +00:00
Erik Huelsmann
4bf0946de9 * Automatic Dockerfile update by release process 2019-09-29 19:27:23 +00:00
Erik Huelsmann
44e9ad83b8 * Automatic Dockerfile update by release process 2019-08-18 21:05:44 +00:00
Erik Huelsmann
d899a7137c * Automatic Dockerfile update by release process 2019-01-20 14:32:04 +00:00
Erik Huelsmann
4d9aa13a7d * Automatic Dockerfile update by release process 2018-12-25 23:29:52 +00:00
Erik Huelsmann
89e2cef3af * Automatic Dockerfile update by release process 2018-12-16 18:19:26 +00:00
Erik Huelsmann
0746f6e17d * Automatic Dockerfile update by release process 2018-12-14 11:33:37 +00:00
Erik Huelsmann
fc3f0cdf6a * Automatic Dockerfile update by release process 2018-10-14 20:10:54 +00:00
Erik Huelsmann
d42ade1dc0 * Automatic Dockerfile update by release process 2018-09-16 20:01:29 +00:00
4 changed files with 83 additions and 134 deletions

View File

@@ -1,53 +1,9 @@
# Build time variables FROM debian:stretch-slim
ARG SRCIMAGE=debian:stretch-slim
FROM $SRCIMAGE AS builder
ARG LSMB_VERSION="1.7.41"
ARG LSMB_DL_DIR="Releases"
ARG ARTIFACT_LOCATION="https://download.ledgersmb.org/f/$LSMB_DL_DIR/$LSMB_VERSION/ledgersmb-$LSMB_VERSION.tar.gz"
RUN set -x ; \
DEBIAN_FRONTEND="noninteractive" apt-get -y update && \
DEBIAN_FRONTEND="noninteractive" apt-get -y upgrade && \
DEBIAN_FRONTEND="noninteractive" apt-get -y install dh-make-perl libmodule-cpanfile-perl git wget && \
apt-file update
RUN set -x ; \
wget --quiet -O /tmp/ledgersmb-$LSMB_VERSION.tar.gz "$ARTIFACT_LOCATION" && \
tar -xzf /tmp/ledgersmb-$LSMB_VERSION.tar.gz --directory /srv && \
rm -f /tmp/ledgersmb-$LSMB_VERSION.tar.gz && \
cd /srv/ledgersmb && \
( ( for lib in $( cpanfile-dump --with-all-features --recommends --no-configure --no-build --no-test ) ; \
do \
if dh-make-perl locate "$lib" 2>/dev/null ; \
then \
: \
else \
echo no : $lib ; \
fi ; \
done ) | grep -v dh-make-perl | grep -v 'not found' | grep -vi 'is in Perl ' | cut -d' ' -f4 | sort | uniq | tee /srv/derived-deps ) && \
cat /srv/derived-deps
#
#
# The real image build starts here
#
#
FROM $SRCIMAGE
MAINTAINER Freelock john@freelock.com MAINTAINER Freelock john@freelock.com
# Build time variables # Build time variables
ARG LSMB_VERSION="1.7.41" ENV LSMB_VERSION 1.6.20
ARG LSMB_DL_DIR="Releases"
ARG ARTIFACT_LOCATION="https://download.ledgersmb.org/f/$LSMB_DL_DIR/$LSMB_VERSION/ledgersmb-$LSMB_VERSION.tar.gz"
# Install Perl, Tex, Starman, psql client, and all dependencies # Install Perl, Tex, Starman, psql client, and all dependencies
# Without libclass-c3-xs-perl, performance is terribly slow... # Without libclass-c3-xs-perl, performance is terribly slow...
@@ -60,11 +16,7 @@ ARG ARTIFACT_LOCATION="https://download.ledgersmb.org/f/$LSMB_DL_DIR/$LSMB_VERSI
# Installing psql client directly from instructions at https://wiki.postgresql.org/wiki/Apt # Installing psql client directly from instructions at https://wiki.postgresql.org/wiki/Apt
# That mitigates issues where the PG instance is running a newer version than this container # That mitigates issues where the PG instance is running a newer version than this container
RUN echo -n "APT::Install-Recommends \"0\";\nAPT::Install-Suggests \"0\";\n" >> /etc/apt/apt.conf && \
COPY --from=builder /srv/derived-deps /tmp/derived-deps
RUN set -x ; \
echo -n "APT::Install-Recommends \"0\";\nAPT::Install-Suggests \"0\";\n" >> /etc/apt/apt.conf && \
mkdir -p /usr/share/man/man1/ && \ mkdir -p /usr/share/man/man1/ && \
mkdir -p /usr/share/man/man2/ && \ mkdir -p /usr/share/man/man2/ && \
mkdir -p /usr/share/man/man3/ && \ mkdir -p /usr/share/man/man3/ && \
@@ -76,10 +28,30 @@ RUN set -x ; \
DEBIAN_FRONTEND="noninteractive" apt-get dist-upgrade -y -q && \ DEBIAN_FRONTEND="noninteractive" apt-get dist-upgrade -y -q && \
DEBIAN_FRONTEND="noninteractive" apt-get -y -q install \ DEBIAN_FRONTEND="noninteractive" apt-get -y -q install \
wget ca-certificates gnupg \ wget ca-certificates gnupg \
$( cat /tmp/derived-deps ) \ libcgi-emulate-psgi-perl libcgi-simple-perl libconfig-inifiles-perl \
libdbd-pg-perl libdbi-perl libdata-uuid-perl libdatetime-perl \
libdatetime-format-strptime-perl libio-stringy-perl \
libjson-xs-perl libcpanel-json-xs-perl liblist-moreutils-perl \
liblocale-maketext-perl liblocale-maketext-lexicon-perl \
liblog-log4perl-perl libmime-lite-perl libmime-types-perl \
libmath-bigint-gmp-perl libmodule-runtime-perl libmoose-perl \
libmoosex-nonmoose-perl libnumber-format-perl \
libpgobject-perl libpgobject-simple-perl libpgobject-simple-role-perl \
libpgobject-type-bigfloat-perl libpgobject-type-datetime-perl \
libpgobject-type-bytestring-perl libpgobject-util-dbmethod-perl \
libpgobject-util-dbadmin-perl libplack-perl \
libplack-middleware-reverseproxy-perl \
libtemplate-perl libtext-csv-perl libtext-csv-xs-perl \
libtext-markdown-perl libxml-simple-perl \
libnamespace-autoclean-perl \
libimage-size-perl \
libtemplate-plugin-latex-perl libtex-encode-perl \
libclass-c3-xs-perl libclass-accessor-lite-perl \ libclass-c3-xs-perl libclass-accessor-lite-perl \
texlive-latex-recommended texlive-fonts-recommended \ libnet-cidr-lite-perl libtest-requires-perl \
texlive-latex-recommended \
texlive-xetex fonts-liberation \ texlive-xetex fonts-liberation \
starman \
libopenoffice-oodoc-perl \
ssmtp \ ssmtp \
lsb-release && \ lsb-release && \
echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list && \ echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list && \
@@ -87,7 +59,7 @@ RUN set -x ; \
DEBIAN_FRONTEND="noninteractive" apt-get -q -y update && \ DEBIAN_FRONTEND="noninteractive" apt-get -q -y update && \
DEBIAN_FRONTEND="noninteractive" apt-get -q -y install postgresql-client && \ DEBIAN_FRONTEND="noninteractive" apt-get -q -y install postgresql-client && \
DEBIAN_FRONTEND="noninteractive" apt-get -q -y install git cpanminus make gcc libperl-dev && \ DEBIAN_FRONTEND="noninteractive" apt-get -q -y install git cpanminus make gcc libperl-dev && \
wget --quiet -O /tmp/ledgersmb-$LSMB_VERSION.tar.gz "$ARTIFACT_LOCATION" && \ wget --quiet -O /tmp/ledgersmb-$LSMB_VERSION.tar.gz "https://download.ledgersmb.org/f/Releases/$LSMB_VERSION/ledgersmb-$LSMB_VERSION.tar.gz" && \
tar -xzf /tmp/ledgersmb-$LSMB_VERSION.tar.gz --directory /srv && \ tar -xzf /tmp/ledgersmb-$LSMB_VERSION.tar.gz --directory /srv && \
rm -f /tmp/ledgersmb-$LSMB_VERSION.tar.gz && \ rm -f /tmp/ledgersmb-$LSMB_VERSION.tar.gz && \
cpanm --notest \ cpanm --notest \

View File

@@ -1,18 +1,12 @@
# ledgersmb-docker # ledgersmb-docker
Dockerfile for LedgerSMB Docker image Dockerfile for LedgerSMB Docker image
# Supported tags # Supported tags
- `1.8` - Preview version for the 1.8 branch - `1.6`, `1.6.x`, `latest` - Latest release tarball from 1.6 branch
- `1.7`, `1.7.x`, `latest` - Latest official release from 1.7 branch - `1.5`, `1.5.x` - Latest release tarball from 1.5 branch
- `1.6`, `1.6.33` - Last official release from 1.6 branch - `1.4`, `1.4.x` - Latest tagged release of git 1.4 branch
- `1.5`, `1.5.30` - Last official release from 1.5 branch
- `1.4`, `1.4.42` - Last official release from 1.4 branch
- `master` - Master branch from git, unstable
Containers supporting the development process are provided
through the ledgersmb-dev-docker project. See https://github.com/ledgersmb/ledgersmb-dev-docker/blob/master/README.md#getting-started.
# What is LedgerSMB? # What is LedgerSMB?
@@ -29,9 +23,9 @@ This image is designed to be used in conjunction with a running PostgreSQL
instance (such as may be provided through a separate image). instance (such as may be provided through a separate image).
This image exposes port 5762 running a Starman HTTP application server. We This image exposes port 5762 running a Starman HTTP application server. We
do recommend not exposing this port publicly, because do not recommend exposing this port publicly, because
1. The Starman author recommends not exposing it 1. The Starman author recommends it
2. We strongly recommend TLS encryption of all application traffic 2. We strongly recommend TLS encryption of all application traffic
While the exposed port can be used for quick evaluation, it's recommended While the exposed port can be used for quick evaluation, it's recommended
@@ -40,45 +34,33 @@ to add the TLS layer by applying Nginx or Apache as reverse proxy.
Enabling optional functionalities such as outgoing e-mail and printing Enabling optional functionalities such as outgoing e-mail and printing
could require additional setup of a mail service or CUPS printer service. could require additional setup of a mail service or CUPS printer service.
# How to use this image # Quickstart
This image can be installed either automatically with the Docker compose file The quickest way to get this image up and running is by using the
or manually with docker only. `docker-compose` file available through the GitHub repository at:
## Docker-Compose installation and start https://github.com/ledgersmb/ledgersmb-docker/blob/1.7/docker-compose.yml
This image provides `docker-compose.yml` which can be used to pull related which sets up both this image and a supporting database image for
images, install them, establish an internal network for their communications, production purposes (i.e. with persistent (database) data. The database
adjust environment variables, start and stop LedgerSMB. The only instructions username and password are:
required, after the optional edition of the file to adjust the environment
variables, are:
```plain
$ docker-compose pull
$ docker-compose up
```
This will set up two containers: (1) a PostgreSQL container with persistent
storage which is retained between container updates and (2) a LedgerSMB
container configured to connect to the PostgreSQL container as its database
server.
The database username and password are:
```plain ```plain
username: postgres username: postgres
password: abc password: abc
``` ```
From here, follow the steps as detailed in the instructions for The docker-compose file does *not* set up an Nginx or Apache reverse proxy
[preparing for first use](https://ledgersmb.org/content/preparing-ledgersmb-17-first-use). with TLS 1.2/1.3 support -- a requirement if you want to access your
installation over any type of network (and especially the internet).
## Manual installation ## Manual installation
This section assumes availability of a PostgreSQL server to attach to the This section assumes availability of a PostgreSQL server to attach to the
LedgerSMB image as the database server. LedgerSMB image as the database server.
### Start LedgerSMB ## Start LedgerSMB
```plain ```plain
$ docker run -d -p 5762:5762 --name myledger \ $ docker run -d -p 5762:5762 --name myledger \
@@ -92,7 +74,7 @@ http://localhost:5762/setup.pl and http://localhost:5762/login.pl.
Below are more variables which determine container configuration, Below are more variables which determine container configuration,
like `POSTGRES_HOST` above. like `POSTGRES_HOST` above.
# Set up LedgerSMB ## Set up LedgerSMB
* Visit http://myledger:5762/setup.pl. * Visit http://myledger:5762/setup.pl.
* Log in with the "postgres" user and the password `abc` as given above - * Log in with the "postgres" user and the password `abc` as given above -
@@ -148,18 +130,21 @@ affect the performance experience of users.
## Mail configuration ## Mail configuration
### Before 1.8.0 The docker image uses `ssmtp` to send mail.
These variables are used to set outgoing SMTP defaults. * `SSMTP_ROOT` (config: `Root`)
* `SSMTP_ROOT` (config: `Root` -- DEPRECATED)
* `SSMTP_MAILHUB` (config: `Mailhub`) * `SSMTP_MAILHUB` (config: `Mailhub`)
* `SSMTP_HOSTNAME` (config: `Hostname`) * `SSMTP_HOSTNAME` (config: `Hostname`)
* `SSMTP_USE_STARTTLS` (config: `UseSTARTTLS`) * `SSMTP_USE_STARTTLS` (config: `UseSTARTTLS`)
* `SSMTP_AUTH_USER` (config: `AuthUser`) * `SSMTP_AUTH_USER` (config: `AuthUser`)
* `SSMTP_AUTH_PASS` (config: `AuthPass`) * `SSMTP_AUTH_PASS` (config: `AuthPass`)
* `SSMTP_AUTH_METHOD` (config: `AuthMethod` -- DEPRECATED) * `SSMTP_AUTH_METHOD` (config: `AuthMethod`)
* `SSMTP_FROMLINE_OVERRIDE` (config: `FromLineOverride` -- DEPRECATED) * `SSMTP_FROMLINE_OVERRIDE` (config: `FromLineOverride`)
These variables are used to set outgoing SMTP defaults.
To set the outgoing email address, set `SSMTP_ROOT` and `SSMTP_HOSTNAME` at
a minimum.
`SSMTP_MAILHUB` defaults to the default docker0 interface, so if your host is `SSMTP_MAILHUB` defaults to the default docker0 interface, so if your host is
already configured to relay mail, this should relay successfully with only already configured to relay mail, this should relay successfully with only
@@ -170,25 +155,6 @@ Use the [ssmtp.conf man
page](https://www.systutorials.com/docs/linux/man/5-ssmtp.conf/) to look up page](https://www.systutorials.com/docs/linux/man/5-ssmtp.conf/) to look up
the meaning and function of each of the mail configuration keys. the meaning and function of each of the mail configuration keys.
### 1.8.0 and higher (under development)
As of 1.8.0, the image is based on Debian Buster instead of Debian Stretch;
with Buster, the `ssmtp` program has been removed from Debian, this image
had to change strategy. The main application always came with built-in e-mail
yet with the deprecation, the abilities have expanded.
The following parameters are now supported to set mail preferences:
* `LSMB_MAIL_SMTPHOST`
* `LSMB_MAIL_SMTPPORT`
* `LSMB_MAIL_SMTPTLS`
* `LSMB_MAIL_SMTPSENDER_HOSTNAME`
* `LSMB_MAIL_SMTPUSER`
* `LSMB_MAIL_SMTPPASS`
* `LSMB_MAIL_SMTPAUTHMECH`
# Troubleshooting/Developing # Troubleshooting/Developing
Currently the LedgerSMB installation is in /srv/ledgersmb Currently the LedgerSMB installation is in /srv/ledgersmb

View File

@@ -28,12 +28,18 @@ services:
lsmb: lsmb:
depends_on: depends_on:
- postgres - postgres
image: ghcr.io/ledgersmb/ledgersmb:1.7 image: ledgersmb/ledgersmb:1.6
networks: networks:
- internal - internal
- default - default
ports: # Uncomment the 'ports' section to map the LedgerSMB container port (5762)
- "127.0.0.1:5762:5762" # to the host's port of the same number, thus making LedgerSMB
# available on http://<host-dns-or-ip>:5762/
# SECURITY NOTE: Do this for evaluation purposes only!
# In production, be sure to use SSL/TLS to protect user's passwords
# and other sensitive data
# ports:
# - "5762:5762"
environment: environment:
# The LSMB_WORKERS environment variable lets you select the number # The LSMB_WORKERS environment variable lets you select the number
# of processes serving HTTP requests. The default number of 2 workers # of processes serving HTTP requests. The default number of 2 workers
@@ -52,15 +58,6 @@ services:
# SSMTP_AUTH_METHOD: # SSMTP_AUTH_METHOD:
# SSMTP_USE_STARTTLS: # SSMTP_USE_STARTTLS:
# SSMTP_FROMLINE_OVERRIDE: # SSMTP_FROMLINE_OVERRIDE:
#
#
# The PROXY_IP environment variable lets you set the IP address
# (range) of the reverse proxy used for TLS termination, which forwards
# its requests to this container. When this reverse proxy runs on the
# Docker host, the default below applies. In case the reverse proxy is
# hosted in a separate container, this setting needs to be adjusted.
#
# PROXY_IP: 172.17.0.1/12
# having the dbdata volume is required to persist our # having the dbdata volume is required to persist our
# data between PostgreSQL container updates; without # data between PostgreSQL container updates; without

View File

@@ -16,20 +16,34 @@ default_db = $DEFAULT_DB
[mail] [mail]
sendmail = /usr/sbin/ssmtp sendmail = /usr/sbin/ssmtp
[proxy]
ip=${PROXY_IP:-172.17.0.1/12}
EOF EOF
export LSMB_CONFIG_FILE='/tmp/ledgersmb.conf' export LSMB_CONFIG_FILE='/tmp/ledgersmb.conf'
fi fi
if [ ! -d "/tmp/ledgersmb" ]; then if [ ! -f "/tmp/ledgersmb" ]; then
mkdir -p /tmp/ledgersmb mkdir /tmp/ledgersmb
fi fi
# Currently unmaintained/untested
# if [ ! -z ${CREATE_DATABASE+x} ]; then
# perl tools/dbsetup.pl --company $CREATE_DATABASE \
# --host $POSTGRES_HOST \
# --postgres_password "$POSTGRES_PASS"
#fi
# Needed for modules loaded by cpanm
export PERL5LIB
for PerlLib in /usr/lib/perl5* /usr/local/lib/perl5*/site_perl/* ; do
[[ -d "$PerlLib" ]] && {
PERL5LIB="$PerlLib";
echo -e "\tmaybe: $PerlLib";
}
done ;
echo "Selected PERL5LIB=$PERL5LIB";
# start ledgersmb # start ledgersmb
# --preload-app allows application initialization to kill the entire # --preload-app allows application initialization to kill the entire
# starman instance (instead of just the worker, which will immediately # starman instance (instead of just the worker, which will immediately
# get restarted); it also has a positive effect on memory use # get restarted); it also has a positive effect on memory use
exec starman --port 5762 --workers ${LSMB_WORKERS:-5} -I lib -I old/lib \ exec starman --port 5762 --workers ${LSMB_WORKERS:-5} --preload-app bin/ledgersmb-server.psgi
--preload-app bin/ledgersmb-server.psgi