Compare commits

..

16 Commits

Author SHA1 Message Date
Erik Huelsmann
1041c71942 * Automatic Dockerfile update by release process 2024-02-02 09:06:44 -05:00
Erik Huelsmann
69920510c5 * Automatic Dockerfile update by release process 2024-01-13 15:03:32 -05:00
Erik Huelsmann
7f4ea3d2fd * Automatic Dockerfile update by release process 2023-12-30 17:10:42 -05:00
Erik Huelsmann
901bd3ece8 * Automatic Dockerfile update by release process 2023-12-15 16:17:25 -05:00
Erik Huelsmann
749c7fd461 * Automatic Dockerfile update by release process 2023-12-09 05:56:44 -05:00
Erik Huelsmann
6a1ff9096d * Automatic Dockerfile update by release process 2023-11-11 17:20:56 -05:00
Erik Huelsmann
3fae7e9c67 * Automatic Dockerfile update by release process 2023-10-22 16:01:38 -04:00
Erik Huelsmann
f9fbfba57a
Update Dockerfile 2023-10-22 21:10:23 +02:00
Erik Huelsmann
6cfa72e29a
Update Dockerfile
Use MetaCPAN database instead of the default.
2023-10-22 21:09:09 +02:00
Erik Huelsmann
d39a26f0f3 * Automatic Dockerfile update by release process 2023-10-10 15:01:56 -04:00
Erik Huelsmann
0215a3442a Update README.md 2023-10-03 23:01:27 +02:00
Erik Huelsmann
05429770c5 * Automatic Dockerfile update by release process 2023-10-02 15:42:18 -04:00
Erik Huelsmann
a12afdf3b0 Update latest 1.9 release 2023-09-29 15:30:05 +02:00
Erik Huelsmann
9a8ee86b71 * Automatic Dockerfile update by release process 2023-08-31 16:41:08 -04:00
Erik Huelsmann
fb8e60f24c
Create no-response.yml 2023-08-25 20:46:17 +02:00
Erik Huelsmann
5d4727641f * Automatic Dockerfile update by release process 2023-08-01 18:27:48 -04:00
6 changed files with 75 additions and 227 deletions

View File

@ -1,18 +0,0 @@
name: Docker Image cleanup
on:
push:
workflow_dispatch:
schedule:
# Schedule for five minutes after the hour, every Friday
- cron: '10 3 * * 5'
jobs:
cleanup:
if: github.repository_owner == 'ledgersmb'
runs-on: ubuntu-latest
steps:
- name: ghcr.io cleanup action
uses: dataaxiom/ghcr-cleanup-action@v1
with:
packages: ledgersmb

View File

@ -11,16 +11,15 @@ on:
jobs: jobs:
noResponse: noResponse:
if: github.repository_owner == 'ledgersmb'
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/stale@v9 - uses: lee-dohm/no-response@v0.5.0
with: with:
days-before-issue-stale: -1 token: ${{ github.token }}
days-before-pr-stale: -1
stale-issue-label: waiting-for-user
# Number of days of inactivity before an Issue is closed for lack of response # Number of days of inactivity before an Issue is closed for lack of response
days-before-close: 90 daysUntilClose: 90
# Label requiring a response # Label requiring a response
close-issue-message: > responseRequiredLabel: waiting-for-user
# Comment to post when closing an Issue for lack of response. Set to `false` to disable
closeComment: >
Closing: more than 90 days without user response. Feel free to reopen with your comments. Closing: more than 90 days without user response. Feel free to reopen with your comments.

View File

@ -1,19 +1,19 @@
# Build time variables # Build time variables
ARG SRCIMAGE=debian:bookworm-slim ARG SRCIMAGE=debian:bullseye-slim
FROM $SRCIMAGE AS builder FROM $SRCIMAGE AS builder
ARG LSMB_VERSION="1.12.7" ARG LSMB_VERSION="1.10.30"
ARG LSMB_DL_DIR="Releases" ARG LSMB_DL_DIR="Releases"
ARG ARTIFACT_LOCATION="https://download.ledgersmb.org/f/$LSMB_DL_DIR/$LSMB_VERSION/ledgersmb-$LSMB_VERSION.tar.gz" ARG ARTIFACT_LOCATION="https://download.ledgersmb.org/f/$LSMB_DL_DIR/$LSMB_VERSION/ledgersmb-$LSMB_VERSION.tar.gz"
RUN set -x ; \ RUN set -x ; \
DEBIAN_FRONTEND="noninteractive" apt-get -q -y update && \ DEBIAN_FRONTEND="noninteractive" apt-get -y update && \
DEBIAN_FRONTEND="noninteractive" apt-get -q -y dist-upgrade && \ DEBIAN_FRONTEND="noninteractive" apt-get -y upgrade && \
DEBIAN_FRONTEND="noninteractive" apt-get -q -y install dh-make-perl libmodule-cpanfile-perl git wget && \ DEBIAN_FRONTEND="noninteractive" apt-get -y install dh-make-perl libmodule-cpanfile-perl git wget && \
apt-file update apt-file update
RUN set -x ; \ RUN set -x ; \
@ -51,15 +51,19 @@ LABEL org.opencontainers.image.description="LedgerSMB is a full featured double-
the LedgerSMB project is to bring high quality ERP and accounting capabilities\ the LedgerSMB project is to bring high quality ERP and accounting capabilities\
to Small and Midsize Businesses." to Small and Midsize Businesses."
ARG LSMB_VERSION="1.12.7" ARG LSMB_VERSION="1.10.30"
ARG LSMB_DL_DIR="Releases" ARG LSMB_DL_DIR="Releases"
ARG ARTIFACT_LOCATION="https://download.ledgersmb.org/f/$LSMB_DL_DIR/$LSMB_VERSION/ledgersmb-$LSMB_VERSION.tar.gz" ARG ARTIFACT_LOCATION="https://download.ledgersmb.org/f/$LSMB_DL_DIR/$LSMB_VERSION/ledgersmb-$LSMB_VERSION.tar.gz"
### PACKAGE REQUIREMENTS RATIONALE # Install Perl, Tex, Starman, psql client, and all dependencies
# # Without libclass-c3-xs-perl, performance is terribly slow...
# postgresql-client(from apt.postgresql.org): reduces chances running a newer server than this client
# fonts-liberation: installed for compatibility with templates from 1.8 and earlier # 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 COPY --from=builder /srv/derived-deps /tmp/derived-deps
@ -73,17 +77,19 @@ RUN set -x ; \
mkdir -p /usr/share/man/man6/ && \ mkdir -p /usr/share/man/man6/ && \
mkdir -p /usr/share/man/man7/ && \ mkdir -p /usr/share/man/man7/ && \
mkdir -p /usr/share/man/man8/ && \ mkdir -p /usr/share/man/man8/ && \
DEBIAN_FRONTEND="noninteractive" apt-get -q -y update && \ DEBIAN_FRONTEND="noninteractive" apt-get -y update && \
DEBIAN_FRONTEND="noninteractive" apt-get -q -y dist-upgrade && \ DEBIAN_FRONTEND="noninteractive" apt-get -y upgrade && \
DEBIAN_FRONTEND="noninteractive" apt-get -q -y install \ DEBIAN_FRONTEND="noninteractive" apt-get -y install \
wget ca-certificates gnupg iproute2 \ wget ca-certificates gnupg \
$( cat /tmp/derived-deps ) \ $( cat /tmp/derived-deps ) \
libclass-c3-xs-perl \
texlive-plain-generic texlive-latex-recommended texlive-fonts-recommended \ texlive-plain-generic texlive-latex-recommended texlive-fonts-recommended \
texlive-xetex fonts-liberation \ texlive-xetex fonts-liberation \
lsb-release postgresql-common && \ lsb-release && \
/usr/share/postgresql-common/pgdg/apt.postgresql.org.sh -y && \ echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list && \
DEBIAN_FRONTEND="noninteractive" apt-get -q -y update && \ (wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -) && \
DEBIAN_FRONTEND="noninteractive" apt-get -q -y install postgresql-client && \ DEBIAN_FRONTEND="noninteractive" apt-get -y update && \
DEBIAN_FRONTEND="noninteractive" apt-get -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 "$ARTIFACT_LOCATION" && \
tar -xzf /tmp/ledgersmb-$LSMB_VERSION.tar.gz --directory /srv && \ tar -xzf /tmp/ledgersmb-$LSMB_VERSION.tar.gz --directory /srv && \
@ -93,9 +99,9 @@ RUN set -x ; \
--with-feature=latex-pdf-ps \ --with-feature=latex-pdf-ps \
--with-feature=openoffice \ --with-feature=openoffice \
--installdeps /srv/ledgersmb/ && \ --installdeps /srv/ledgersmb/ && \
DEBIAN_FRONTEND="noninteractive" apt-get purge -q -y git cpanminus make gcc libperl-dev && \ apt-get purge -q -y git cpanminus make gcc libperl-dev && \
DEBIAN_FRONTEND="noninteractive" apt-get autoremove -q -y && \ apt-get autoremove -q -y && \
DEBIAN_FRONTEND="noninteractive" apt-get clean -q && \ apt-get clean -q && \
rm -rf ~/.cpanm/ /var/lib/apt/lists/* /usr/share/man/* rm -rf ~/.cpanm/ /var/lib/apt/lists/* /usr/share/man/*
@ -106,27 +112,23 @@ WORKDIR /srv/ledgersmb
# Configure outgoing mail to use host, other run time variable defaults # Configure outgoing mail to use host, other run time variable defaults
## MAIL ## MAIL
# '__CONTAINER_GATEWAY__' is a magic value which will be substituted ENV LSMB_MAIL_SMTPHOST 172.17.0.1
# with the actual gateway IP address #ENV LSMB_MAIL_SMTPPORT 25
ENV LSMB_MAIL_SMTPHOST=__CONTAINER_GATEWAY__ #ENV LSMB_MAIL_SMTPSENDER_HOSTNAME (container hostname)
#ENV LSMB_MAIL_SMTPPORT=25 #ENV LSMB_MAIL_SMTPTLS
#ENV LSMB_MAIL_SMTPSENDER_HOSTNAME=(container hostname) #ENV LSMB_MAIL_SMTPUSER
#ENV LSMB_MAIL_SMTPTLS= #ENV LSMB_MAIL_SMTPPASS
#ENV LSMB_MAIL_SMTPUSER= #ENV LSMB_MAIL_SMTPAUTHMECH
#ENV LSMB_MAIL_SMTPPASS=
#ENV LSMB_MAIL_SMTPAUTHMECH=
## DATABASE ## DATABASE
ENV POSTGRES_HOST=postgres ENV POSTGRES_HOST postgres
ENV POSTGRES_PORT=5432 ENV POSTGRES_PORT 5432
ENV DEFAULT_DB=lsmb ENV DEFAULT_DB lsmb
COPY start.sh /usr/local/bin/start.sh COPY start.sh /usr/local/bin/start.sh
RUN chmod +x /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: # Work around an aufs bug related to directory permissions:
RUN mkdir -p /tmp && chmod 1777 /tmp RUN mkdir -p /tmp && chmod 1777 /tmp

View File

@ -2,23 +2,10 @@
Dockerfile for LedgerSMB Docker image 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 # Supported tags
- `1.12`, `1.12.x`, `latest` - Latest official release from the 1.12 branch - `1.11`, `1.11.x`, `latest` - Latest official release from the 1.11 branch
- `1.11`, `1.11.x` - Latest official release from the 1.11 branch - `1.10`, `1.10.x` - Latest official release from the 1.10 branch
- `1.10`, `1.10.38` - Last official release from the 1.10 branch (End-of-Life)
- `1.9`, `1.9.30` - Last official release from the 1.9 branch (End-of-Life) - `1.9`, `1.9.30` - Last official release from the 1.9 branch (End-of-Life)
- `1.8`, `1.8.31` - Last official release from the 1.8 branch (End-of-Life) - `1.8`, `1.8.31` - Last official release from the 1.8 branch (End-of-Life)
- `1.7`, `1.7.41` - Last official release from the 1.7 branch (End-of-Life) - `1.7`, `1.7.41` - Last official release from the 1.7 branch (End-of-Life)
@ -216,47 +203,6 @@ The following parameters are now supported to set mail preferences:
# Advanced setup # 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.1XX.yaml` in the same folder. E.g.:
```plain
$ cat <<EOF > /home/ledgersmb/conf/ledgersmb.100.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 ## Docker Compose with reverse proxy
The `docker-compose-reverseproxy.yml` file shows a docker-compose setup The `docker-compose-reverseproxy.yml` file shows a docker-compose setup

View File

@ -16,7 +16,7 @@ services:
# because that allows us to use the default hostname ("postgres") # because that allows us to use the default hostname ("postgres")
# from the LedgerSMB configuration # from the LedgerSMB configuration
postgres: postgres:
image: postgres:15-alpine image: postgres:12-alpine
environment: environment:
# Replace the password below for a secure setup # Replace the password below for a secure setup
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-abc} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-abc}
@ -31,29 +31,16 @@ services:
lsmb: lsmb:
depends_on: depends_on:
- postgres - postgres
image: ghcr.io/ledgersmb/ledgersmb:1.12 image: ghcr.io/ledgersmb/ledgersmb:1.10
# 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:
# # Override all configuration:
# - type: bind
# source: /home/ledgersmb/conf
# target: /srv/ledgersmb/local/conf
# # Add a snippet of configuration:
# - type: bind
# source: /home/ledgersmb/conf/ledgersmb.100.yaml
# target: /srv/ledgersmb/local/conf/ledgersmb.100.yaml
networks: networks:
- internal - internal
- default - default
# Comment the 'ports' section to disable mapping the LedgerSMB container port (5762) # Comment the 'ports' section to disable mapping the LedgerSMB container port (5762)
# to the host's port of the same number. Mapping "5762:5762" makes LedgerSMB # to the host's port of the same number, thus making LedgerSMB
# available on http://<host-dns-or-ip>:5762/ # available on http://<host-dns-or-ip>:5762/
# SECURITY NOTE: Leave this uncommented for evaluation purposes only! # SECURITY NOTE: Do this for evaluation purposes only!
# In production, be sure to use SSL/TLS (such as by reverse proxying) to protect # In production, be sure to use SSL/TLS to protect user's passwords
# user's passwords and other sensitive data # and other sensitive data
ports: ports:
- "5762:5762" - "5762:5762"
environment: environment:

114
start.sh
View File

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
cd /srv/ledgersmb cd /srv/ledgersmb
[[ -d ./local/conf/ ]] || mkdir ./local/conf/
if [[ -n "$SSMTP_ROOT" ]]; then if [[ -n "$SSMTP_ROOT" ]]; then
echo "\$SSMTP_ROOT set; parameter is deprecated and will be ignored" echo "\$SSMTP_ROOT set; parameter is deprecated and will be ignored"
LSMB_HAVE_DEPRECATED=1 LSMB_HAVE_DEPRECATED=1
@ -67,94 +67,28 @@ if [[ -n "$LSMB_HAVE_DEPRECATED" ]]; then
echo "!!! DEPRECATED \$SSMTP_* PARAMETERS WILL BE REMOVED in the 1.9 image!!!" echo "!!! DEPRECATED \$SSMTP_* PARAMETERS WILL BE REMOVED in the 1.9 image!!!"
fi fi
if [[ ! -f ./local/conf/ledgersmb.yaml ]]; then
if [[ "x$LSMB_MAIL_SMTPTLS" == "xyes" ]]; then
tls_mode=starttls
elif [[ "x$LSMB_MAIL_SMTPTLS" == "xraw" ]]; then
tls_mode=ssl
else
tls_mode=none
fi
cat <<EOF >./local/conf/ledgersmb.yaml
paths:
\$class: Beam::Wire
config:
UI: ./UI/
UI_cache: lsmb_templates/
db: if [[ ! -f ledgersmb.conf ]]; then
\$class: LedgerSMB::Database::Factory cat <<EOF >/tmp/ledgersmb.conf
connect_data: [main]
host: ${POSTGRES_HOST:-postgres} cache_templates = 1
port: ${POSTGRES_PORT:-5432} [database]
host = $POSTGRES_HOST
mail: port = $POSTGRES_PORT
transport: default_db = $DEFAULT_DB
\$class: Email::Sender::Transport::SMTP [mail]
ssl: $tls_mode ${LSMB_MAIL_SMTPHOST:+smtphost=$LSMB_MAIL_SMTPHOST
}${LSMB_MAIL_SMTPPORT:+smtpport=$LSMB_MAIL_SMTPPORT
miscellaneous: }${LSMB_MAIL_SMTPSENDER_HOSTNAME:+smtpsender_hostname=$LSMB_MAIL_SMTPSENDER_HOSTNAME
\$class: Beam::Wire }${LSMB_MAIL_SMTPTLS:+smtptls=$LSMB_MAIL_SMTPTLS
config: }${LSMB_MAIL_SMTPUSER:+smtpuser=$LSMB_MAIL_SMTPUSER
proxy_ip: ${PROXY_IP:-172.17.0.1/12} }${LSMB_MAIL_SMTPPASS:+smtppass=$LSMB_MAIL_SMTPPASS
}${LSMB_MAIL_SMTPAUTHMECH:+smtpauthmech=$LSMB_MAIL_SMTPAUTHMECH
ui: }
class: LedgerSMB::Template::UI [proxy]
method: new_UI ip=${PROXY_IP:-172.17.0.1/12}
lifecycle: eager
args:
cache:
\$ref: paths/UI_cache
root:
\$ref: paths/UI
EOF 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_authenticator:
\$class: Authen::SASL
mechanism: $LSMB_MAIL_SMTPAUTHMECH
callback:
user: $LSMB_MAIL_SMTPUSER
pass: $LSMB_MAIL_SMTPPASS
EOF
fi
fi fi
# start ledgersmb # start ledgersmb
@ -162,14 +96,12 @@ fi
# starman instance (instead of just the worker, which will immediately # starman instance (instead of just the worker, which will immediately
# get restarted) on error; it also has a positive effect on memory use # 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' echo '--------- LEDGERSMB CONFIGURATION: ledgersmb.conf'
cat ${LSMB_CONFIG_FILE} cat ${LSMB_CONFIG_FILE:-ledgersmb.conf}
echo '--------- LEDGERSMB CONFIGURATION --- END' echo '--------- LEDGERSMB CONFIGURATION --- END'
# ':5762:' suppresses an uninitialized variable warning in starman # ':5762:' suppresses an uninitialized variable warning in starman
# the last colon means "don't connect using tls"; without it, there's a warning # the last colon means "don't connect using tls"; without it, there's a warning
exec starman --listen 0.0.0.0:5762 --workers ${LSMB_WORKERS:-5} \ exec starman --listen :5762: --workers ${LSMB_WORKERS:-5} \
-I lib -I old/lib \ -I lib -I old/lib \
--preload-app bin/ledgersmb-server.psgi --preload-app bin/ledgersmb-server.psgi