mirror of
https://github.com/ledgersmb/ledgersmb-docker.git
synced 2025-10-14 08:10:30 -04:00
Compare commits
31 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
d78e166553 | ||
|
5a1fd390f1 | ||
|
d5661d029f | ||
|
88c84967b9 | ||
|
3fec7b91b1 | ||
|
6d6ca05eb1 | ||
|
b39d64964c | ||
|
f697bb6b50 | ||
|
dc4c2cf97a | ||
|
83fb7a4fde | ||
|
0dc6e65c51 | ||
|
51d1d1da0f | ||
|
9f7a4d1f8d | ||
|
7f3a3467f8 | ||
|
91a985bc31 | ||
|
413a63161c | ||
|
7f7aa41a27 | ||
|
6f4d5cba73 | ||
|
3f3ca9dd7f | ||
|
5d1823f88a | ||
|
81a38b3040 | ||
|
93c7b4c77e | ||
|
096350ad7b | ||
|
9cc752a0ff | ||
|
7a17a8630f | ||
|
ee863b6f3d | ||
|
eba882d12a | ||
|
016deec433 | ||
|
0f7242d559 | ||
|
59192ffd20 | ||
|
4ff785d101 |
18
Dockerfile
18
Dockerfile
@@ -1,11 +1,11 @@
|
||||
# Build time variables
|
||||
|
||||
ARG SRCIMAGE=debian:bullseye-slim
|
||||
ARG SRCIMAGE=debian:bookworm-slim
|
||||
|
||||
|
||||
FROM $SRCIMAGE AS builder
|
||||
|
||||
ARG LSMB_VERSION="1.10.29"
|
||||
ARG LSMB_VERSION="1.11.9"
|
||||
ARG LSMB_DL_DIR="Releases"
|
||||
ARG ARTIFACT_LOCATION="https://download.ledgersmb.org/f/$LSMB_DL_DIR/$LSMB_VERSION/ledgersmb-$LSMB_VERSION.tar.gz"
|
||||
|
||||
@@ -51,7 +51,7 @@ LABEL org.opencontainers.image.description="LedgerSMB is a full featured double-
|
||||
the LedgerSMB project is to bring high quality ERP and accounting capabilities\
|
||||
to Small and Midsize Businesses."
|
||||
|
||||
ARG LSMB_VERSION="1.10.29"
|
||||
ARG LSMB_VERSION="1.11.9"
|
||||
ARG LSMB_DL_DIR="Releases"
|
||||
ARG ARTIFACT_LOCATION="https://download.ledgersmb.org/f/$LSMB_DL_DIR/$LSMB_VERSION/ledgersmb-$LSMB_VERSION.tar.gz"
|
||||
|
||||
@@ -61,8 +61,6 @@ 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
|
||||
# That mitigates issues where the PG instance is running a newer version than this container
|
||||
# Install Locale::Codes Locale::Country Locale::Language from CPAN to suppress
|
||||
# deprecation-as-core-module warning
|
||||
|
||||
|
||||
COPY --from=builder /srv/derived-deps /tmp/derived-deps
|
||||
@@ -80,7 +78,7 @@ RUN set -x ; \
|
||||
DEBIAN_FRONTEND="noninteractive" apt-get -y update && \
|
||||
DEBIAN_FRONTEND="noninteractive" apt-get -y upgrade && \
|
||||
DEBIAN_FRONTEND="noninteractive" apt-get -y install \
|
||||
wget ca-certificates gnupg \
|
||||
wget ca-certificates gnupg iproute2 \
|
||||
$( cat /tmp/derived-deps ) \
|
||||
libclass-c3-xs-perl \
|
||||
texlive-plain-generic texlive-latex-recommended texlive-fonts-recommended \
|
||||
@@ -112,7 +110,9 @@ WORKDIR /srv/ledgersmb
|
||||
# Configure outgoing mail to use host, other run time variable defaults
|
||||
|
||||
## MAIL
|
||||
ENV LSMB_MAIL_SMTPHOST 172.17.0.1
|
||||
# '__CONTAINER_GATEWAY__' is a magic value which will be substituted
|
||||
# with the actual gateway IP address
|
||||
ENV LSMB_MAIL_SMTPHOST __CONTAINER_GATEWAY__
|
||||
#ENV LSMB_MAIL_SMTPPORT 25
|
||||
#ENV LSMB_MAIL_SMTPSENDER_HOSTNAME (container hostname)
|
||||
#ENV LSMB_MAIL_SMTPTLS
|
||||
@@ -128,7 +128,9 @@ ENV DEFAULT_DB lsmb
|
||||
COPY start.sh /usr/local/bin/start.sh
|
||||
|
||||
RUN chmod +x /usr/local/bin/start.sh && \
|
||||
mkdir -p /var/www
|
||||
mkdir -p /var/www && \
|
||||
mkdir -p /srv/ledgersmb/local/conf && \
|
||||
chown -R www-data /srv/ledgersmb/local
|
||||
|
||||
# Work around an aufs bug related to directory permissions:
|
||||
RUN mkdir -p /tmp && chmod 1777 /tmp
|
||||
|
53
README.md
53
README.md
@@ -2,6 +2,18 @@
|
||||
|
||||
Dockerfile for LedgerSMB Docker image
|
||||
|
||||
## Content
|
||||
|
||||
1. [Supported tags](#supported-tags)
|
||||
2. [What is LedgerSMB](#what-is-ledgersmb)
|
||||
3. [How to use this image](#how-to-use-this-image)
|
||||
4. [Set up LedgerSMB](#set-up-ledgersmb)
|
||||
5. [Updating the LedgerSMB container](#updating-the-ledgersmb-container)
|
||||
6. [Environment Variables](#environment-variables)
|
||||
7. [Advanced setup](#advanced-setup)
|
||||
8. [Troubleshooting](#troubleshootingdeveloping)
|
||||
9. [User feedback](#user-feedback)
|
||||
|
||||
# Supported tags
|
||||
|
||||
- `1.11`, `1.11.x`, `latest` - Latest official release from the 1.11 branch
|
||||
@@ -203,6 +215,47 @@ The following parameters are now supported to set mail preferences:
|
||||
|
||||
# Advanced setup
|
||||
|
||||
## Changing configuration
|
||||
|
||||
The configuration file is stored in /srv/ledgersmb/local/conf/. By mounting
|
||||
that directory using a bind-mount to a location outside the container,
|
||||
configuration can be changed between container starts:
|
||||
|
||||
```plain
|
||||
$ docker run -d -p 5762:5762 --name myledger \
|
||||
--mount 'type=bind,src=/home/ledgersmb/conf,dst=/srv/ledgersmb/local/conf \
|
||||
-e POSTGRES_HOST=<ip/hostname> ledgersmb/ledgersmb:latest
|
||||
```
|
||||
|
||||
## Overriding or adding configuration
|
||||
|
||||
By pre-creating a configuration file in the mounted configuration directory,
|
||||
the standard configuration generation process in the container can be overruled:
|
||||
|
||||
```plain
|
||||
$ cat <<EOF > /home/ledgersmb/conf/ledgersmb.yaml
|
||||
... YOUR CONFIG HERE ...
|
||||
EOF
|
||||
$ docker run -d -p 5762:5762 --name myledger \
|
||||
--mount 'type=bind,src=/home/ledgersmb/conf,dst=/srv/ledgersmb/local/conf \
|
||||
-e POSTGRES_HOST=<ip/hostname> ledgersmb/ledgersmb:latest
|
||||
```
|
||||
|
||||
If you do not want to completely overrule the configuration generated, but instead
|
||||
supplement the configuration, you can put incremental configuration snippets in
|
||||
files named `ledgersmb.XXX.yaml` in the same folder. E.g.:
|
||||
|
||||
```plain
|
||||
$ cat <<EOF > /home/ledgersmb/conf/ledgersmb.001.yaml
|
||||
logging:
|
||||
file: ledgersmb.logging
|
||||
EOF
|
||||
```
|
||||
|
||||
[Documentation with respect to the available configuration
|
||||
keys](https://github.com/ledgersmb/LedgerSMB/blob/master/doc/conf/ledgersmb.yaml)
|
||||
is available in the LedgerSMB repository.
|
||||
|
||||
## Docker Compose with reverse proxy
|
||||
|
||||
The `docker-compose-reverseproxy.yml` file shows a docker-compose setup
|
||||
|
@@ -16,7 +16,7 @@ services:
|
||||
# because that allows us to use the default hostname ("postgres")
|
||||
# from the LedgerSMB configuration
|
||||
postgres:
|
||||
image: postgres:12-alpine
|
||||
image: postgres:15-alpine
|
||||
environment:
|
||||
# Replace the password below for a secure setup
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-abc}
|
||||
@@ -31,16 +31,24 @@ services:
|
||||
lsmb:
|
||||
depends_on:
|
||||
- postgres
|
||||
image: ghcr.io/ledgersmb/ledgersmb:1.10
|
||||
image: ghcr.io/ledgersmb/ledgersmb:1.11
|
||||
# In order to store the configuration outside the image, allowing it to
|
||||
# be edited between container restarts, uncomment the section below and
|
||||
# change the 'source' to the directory where you want the configuration
|
||||
# to be stored.
|
||||
# volumes:
|
||||
# - type: bind
|
||||
# source: /home/ledgersmb/conf
|
||||
# target: /srv/ledgersmb/local/conf
|
||||
networks:
|
||||
- internal
|
||||
- default
|
||||
# Comment the 'ports' section to disable mapping the LedgerSMB container port (5762)
|
||||
# to the host's port of the same number, thus making LedgerSMB
|
||||
# to the host's port of the same number. Mapping "5762:5762" makes 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
|
||||
# SECURITY NOTE: Leave this uncommented for evaluation purposes only!
|
||||
# In production, be sure to use SSL/TLS (such as by reverse proxying) to protect
|
||||
# user's passwords and other sensitive data
|
||||
ports:
|
||||
- "5762:5762"
|
||||
environment:
|
||||
|
108
start.sh
108
start.sh
@@ -1,7 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd /srv/ledgersmb
|
||||
|
||||
[[ -d ./local/conf/ ]] || mkdir ./local/conf/
|
||||
if [[ -n "$SSMTP_ROOT" ]]; then
|
||||
echo "\$SSMTP_ROOT set; parameter is deprecated and will be ignored"
|
||||
LSMB_HAVE_DEPRECATED=1
|
||||
@@ -67,28 +67,88 @@ if [[ -n "$LSMB_HAVE_DEPRECATED" ]]; then
|
||||
echo "!!! DEPRECATED \$SSMTP_* PARAMETERS WILL BE REMOVED in the 1.9 image!!!"
|
||||
fi
|
||||
|
||||
if [[ ! -f ./local/conf/ledgersmb.yaml ]]; then
|
||||
cat <<EOF >./local/conf/ledgersmb.yaml
|
||||
paths:
|
||||
\$class: Beam::Wire
|
||||
config:
|
||||
UI: ./UI/
|
||||
UI_cache: lsmb_templates/
|
||||
|
||||
if [[ ! -f ledgersmb.conf ]]; then
|
||||
cat <<EOF >/tmp/ledgersmb.conf
|
||||
[main]
|
||||
cache_templates = 1
|
||||
[database]
|
||||
host = $POSTGRES_HOST
|
||||
port = $POSTGRES_PORT
|
||||
default_db = $DEFAULT_DB
|
||||
[mail]
|
||||
${LSMB_MAIL_SMTPHOST:+smtphost=$LSMB_MAIL_SMTPHOST
|
||||
}${LSMB_MAIL_SMTPPORT:+smtpport=$LSMB_MAIL_SMTPPORT
|
||||
}${LSMB_MAIL_SMTPSENDER_HOSTNAME:+smtpsender_hostname=$LSMB_MAIL_SMTPSENDER_HOSTNAME
|
||||
}${LSMB_MAIL_SMTPTLS:+smtptls=$LSMB_MAIL_SMTPTLS
|
||||
}${LSMB_MAIL_SMTPUSER:+smtpuser=$LSMB_MAIL_SMTPUSER
|
||||
}${LSMB_MAIL_SMTPPASS:+smtppass=$LSMB_MAIL_SMTPPASS
|
||||
}${LSMB_MAIL_SMTPAUTHMECH:+smtpauthmech=$LSMB_MAIL_SMTPAUTHMECH
|
||||
}
|
||||
[proxy]
|
||||
ip=${PROXY_IP:-172.17.0.1/12}
|
||||
db:
|
||||
\$class: LedgerSMB::Database::Factory
|
||||
connect_data:
|
||||
host: ${POSTGRES_HOST:-postgres}
|
||||
port: ${POSTGRES_PORT:-5432}
|
||||
|
||||
mail:
|
||||
transport:
|
||||
\$class: LedgerSMB::Mailer::TransportSMTP
|
||||
tls: $LSMB_MAIL_SMTPTLS
|
||||
|
||||
miscellaneous:
|
||||
\$class: Beam::Wire
|
||||
config:
|
||||
proxy_ip: ${PROXY_IP:-172.17.0.1/12}
|
||||
|
||||
ui:
|
||||
class: LedgerSMB::Template::UI
|
||||
method: new_UI
|
||||
lifecycle: eager
|
||||
args:
|
||||
cache:
|
||||
\$ref: paths/UI_cache
|
||||
root:
|
||||
\$ref: paths/UI
|
||||
EOF
|
||||
export LSMB_CONFIG_FILE='/tmp/ledgersmb.conf'
|
||||
|
||||
if [[ -n "$LSMB_MAIL_SMTPHOST" ]]
|
||||
then
|
||||
if [[ "$LSMB_MAIL_SMTPHOST" == "__CONTAINER_GATEWAY__" ]]
|
||||
then
|
||||
LSMB_MAIL_SMTPHOST="$(ip route | awk '/default/ { print $3 }')"
|
||||
export LSMB_MAIL_SMTPHOST
|
||||
fi
|
||||
|
||||
cat <<EOF >./local/conf/ledgersmb.000.yaml
|
||||
mail:
|
||||
transport:
|
||||
host: $LSMB_MAIL_SMTPHOST
|
||||
EOF
|
||||
fi
|
||||
|
||||
if [[ -n "$LSMB_MAIL_SMTPPORT" ]]
|
||||
then
|
||||
cat <<EOF >./local/conf/ledgersmb.001.yaml
|
||||
mail:
|
||||
transport:
|
||||
port: $LSMB_MAIL_SMTPPORT
|
||||
EOF
|
||||
fi
|
||||
|
||||
if [[ -n "$LSMB_MAIL_SMTPSENDER_HOSTNAME" ]]
|
||||
then
|
||||
cat <<EOF >./local/conf/ledgersmb.002.yaml
|
||||
mail:
|
||||
transport:
|
||||
helo: $LSMB_MAIL_SMTPSENDER_HOSTNAME
|
||||
EOF
|
||||
fi
|
||||
|
||||
if [[ -n "$LSMB_MAIL_SMTPUSER" ]]
|
||||
then
|
||||
cat <<EOF >./local/conf/ledgersmb.003.yaml
|
||||
mail:
|
||||
transport:
|
||||
sasl_password: ''
|
||||
sasl_username:
|
||||
\$class: Authen::SASL
|
||||
mechanism: $LSMB_MAIL_SMTPAUTHMECH
|
||||
callback:
|
||||
user: $LSMB_MAIL_SMTPUSER
|
||||
pass: $LSMB_MAIL_SMTPPASS
|
||||
EOF
|
||||
fi
|
||||
fi
|
||||
|
||||
# start ledgersmb
|
||||
@@ -96,12 +156,14 @@ fi
|
||||
# starman instance (instead of just the worker, which will immediately
|
||||
# get restarted) on error; it also has a positive effect on memory use
|
||||
|
||||
LSMB_CONFIG_FILE=${LSMB_CONFIG_FILE:-./local/conf/ledgersmb.yaml}
|
||||
export LSMB_CONFIG_FILE
|
||||
echo '--------- LEDGERSMB CONFIGURATION: ledgersmb.conf'
|
||||
cat ${LSMB_CONFIG_FILE:-ledgersmb.conf}
|
||||
cat ${LSMB_CONFIG_FILE}
|
||||
echo '--------- LEDGERSMB CONFIGURATION --- END'
|
||||
|
||||
# ':5762:' suppresses an uninitialized variable warning in starman
|
||||
# the last colon means "don't connect using tls"; without it, there's a warning
|
||||
exec starman --listen :5762: --workers ${LSMB_WORKERS:-5} \
|
||||
exec starman --listen 0.0.0.0:5762 --workers ${LSMB_WORKERS:-5} \
|
||||
-I lib -I old/lib \
|
||||
--preload-app bin/ledgersmb-server.psgi
|
||||
|
Reference in New Issue
Block a user