Compare commits

..

63 Commits

Author SHA1 Message Date
Erik Huelsmann
ba2bdd0dda * Add 1.7 dependency available in Stretch 2019-01-20 21:27:27 +01:00
Erik Huelsmann
6249141929 * Fix build problem -- uglify-js not being found 2019-01-20 21:27:27 +01:00
Erik Huelsmann
09a79b8258 * Automatic Dockerfile update by release process 2019-01-20 20:03:01 +00:00
Erik Huelsmann
4776803ef8 Merge pull request #22 from ylavoie/ledgersmb-server-development-location
Adjust plackup arguments for includes
2018-07-04 14:39:49 +02:00
Yves Lavoie
0a12f5c735 Adjust plackup arguments for includes 2018-07-03 22:01:57 -04:00
Erik Huelsmann
d808dd0b14 Merge pull request #21 from ylavoie/docker-compose-instructions
Update README with docker-compose instructions
2018-07-03 21:36:05 +02:00
Yves Lavoie
13b4e0f933 Move docker-compose instructions upward and pull images instead of building 2018-06-13 12:30:38 -04:00
Yves Lavoie
892592505f Update README with docker-compose instructions 2018-06-08 21:17:24 -04:00
Erik Huelsmann
708a5afebc * Add option to set the number of Starman workers 2018-05-23 23:23:22 +02:00
Erik Huelsmann
34d10ae0e0 * Add docker-compose.yml to master branch so it appears on the GitHub project home 2018-05-23 21:50:28 +02:00
Erik Huelsmann
f5909088f0 * The NodeSource packages don't need alternatives set up 2018-05-05 00:03:40 +02:00
Erik Huelsmann
34a2270cf3 * Replace 'curl' and remove 'sudo' -- we're running as 'root' anyway 2018-05-04 23:46:29 +02:00
Erik Huelsmann
9881c06e5d * Add NodeSource NodeJS repo to be able to install NPM (not in Stretch) 2018-05-04 23:17:54 +02:00
Erik Huelsmann
c65adc6042 * Add gnupg in order to satisfy ca-certificates/update.d requirements 2018-05-04 22:52:15 +02:00
Erik Huelsmann
f9ee2e86ab * Add '-perl' suffix to libpgobject-util-dbadmin 2018-05-04 22:43:29 +02:00
Erik Huelsmann
e34a6a1326 * Upgrade 'master' docker image to Stretch, updating the package list accordingly 2018-05-04 22:32:43 +02:00
Erik Huelsmann
1d0da66881 * Correct liberation fonts package name (*2 is available as of stretch) 2018-02-17 21:44:49 +01:00
Erik Huelsmann
da2254dd4c * Add fonts missing for xedemo template set 2018-02-17 21:37:21 +01:00
Erik Huelsmann
cd3d2f573d * Bring master in line with 1.5 (syntax-wise) 2018-02-14 20:35:37 +01:00
Erik Huelsmann
1d4430ecfa Merge pull request #17 from sbts/enhancement-latest-pg-tools
install latest version of `postgresql-client`
2018-02-06 22:16:59 +01:00
Erik Huelsmann
a90ac97832 Merge pull request #16 from sbts/enhancement-add-missing-apt-upgrade
Add missing `apt upgrade`
2018-02-06 18:17:42 +01:00
sbts
733413dd16 install latest version of postgresql-client
This is required to handle cases where the PG server is running a newer version than this container has available.
Failing to do this update will normally cause odd problems, including silent failure to backup.
Instead of the expected backup an empty file is generated.
2018-02-06 23:26:12 +08:00
sbts
aeab695a50 Add missing apt upgrade
This is needed to mitigate issues (eg: version dependency mismatches) due to out of date packages.
In theory this should be handled by the parent container, but that won't always be true
2018-02-06 22:39:20 +08:00
Erik Huelsmann
dd13647ec6 * Add more documentation regarding container mail configuration 2018-01-24 21:57:07 +01:00
Erik Huelsmann
2b689e9791 * Close #15 for the master branch 2018-01-06 14:15:01 +01:00
Erik Huelsmann
bef6697325 * Use '--preload-app' to start starman for best performance and memory use 2018-01-06 14:10:18 +01:00
Erik Huelsmann
09d2d73db8 * Improve on rewritten README.md 2017-10-30 21:51:21 +01:00
Erik Huelsmann
db8e441a8f * Rewrite README.md 2017-10-30 21:50:56 +01:00
Erik Huelsmann
638e0813e0 * Rewrite README.md 2017-10-30 21:14:56 +01:00
Erik Huelsmann
d265b58372 * cpanm seems to install in the correct paths already these days 2017-08-14 11:30:21 +02:00
Erik Huelsmann
2fc8e55367 * Add explicit dependency on libclass-c3-xs-per for performance 2017-08-05 09:36:36 +02:00
Erik Huelsmann
69b959f591 Merge pull request #14 from sbts/enhancement-master_reduce_number_of_layers
Enhancement master reduce number of layers
2017-07-09 14:15:24 +02:00
sbts
c7da8194cb remove ARG CACHEBUST
as it does not do anything unless CACHEBUST is actually used. Which it is not
2017-07-09 18:48:59 +08:00
sbts
e0338aa303 remove spurious && from apt-get install 2017-07-09 18:32:33 +08:00
sbts
4dbd5a2a26 revert to explicit setting of DEBIAN_FRONTEND.
Nothing else works correctly. Presumably as dash is the processing shell
2017-07-09 18:24:01 +08:00
sbts
fafaea715e Make sure DEBIAN_FRONTEND is set for all apt-get commands
Do that by parameterising the apt-get
2017-07-09 16:43:53 +08:00
sbts
b8694aa449 Merge remote-tracking branch 'upstream/master' into enhancement-master_reduce_number_of_layers
Conflicts:
	Dockerfile
2017-07-09 15:56:39 +08:00
sbts
98a5696570 Paramaterise dojo build dep packages
- Readd DEBIAN_FRONTEND=interactive.
- Paramaterise dojo build dep packages
2017-07-09 15:29:20 +08:00
Erik Huelsmann
0d1483d78f Merge pull request #12 from sbts/master_don't_write_to_server_dir
Master don't write to server dir
2017-07-09 08:40:59 +02:00
Erik Huelsmann
bde9b780b1 Merge pull request #10 from sbts/master_correct_syntax_for_setting_apt.conf_args
Improve setting apt config
2017-07-09 08:33:45 +02:00
sbts
fd7c04d170 remove stray script that was accidentally committed 2017-07-09 14:09:45 +08:00
sbts
364cf01203 remove stray script that was accidentally committed 2017-07-09 14:07:33 +08:00
sbts
dbf99f981d improve apt handling
to bring it inline with docker best practice
2017-07-08 03:36:27 +08:00
sbts
fa4aa9dae0 stop setting debian frontend
it's against docker best practice
2017-07-08 01:57:43 +08:00
sbts
8f3875acb0 drop need to write config file to /srv/ledgersmb
Instead write it to /tmp.
Also don't copy the entire example file, just write the bits we need
2017-07-02 00:52:36 +08:00
sbts
4905f2a469 Merge remote-tracking branch 'upstream/master' 2017-07-02 00:34:40 +08:00
sbts
cd9e3037f7 Improve setting apt config 2017-07-02 00:12:21 +08:00
Erik Huelsmann
e4f4d31922 * Remove more build artifacts from the container 2017-06-21 00:12:53 +02:00
Erik Huelsmann
4a8d6dc6b6 * Reorganize Dockerfile to optimize image size 2017-06-20 00:36:22 +02:00
Erik Huelsmann
22ac547e94 * Reduce image size further by changing base image 2017-06-01 08:05:04 +02:00
sbts
0627a33477 starting point for a "quickstart" script 2017-05-26 17:55:45 +08:00
Erik Huelsmann
4da73006fa * Minimize the size of the image (went from 2.6GB to 1.4GB!) 2017-05-26 11:06:51 +02:00
Erik Huelsmann
a53dd55ecf * Set up the 'node' regular nodejs binary name using Debian alternatives 2017-05-23 18:31:41 +02:00
Erik Huelsmann
99ba66e9b7 * Cut down on install size by depending on headless Java 2017-05-23 17:13:39 +02:00
Erik Huelsmann
756c28ad4f * Java is required _period_ 2017-05-23 17:07:03 +02:00
Erik Huelsmann
719672490f * npm _install_ uglify 2017-05-23 16:12:13 +02:00
Erik Huelsmann
75c8c8f0b0 * Remove JRE installation and adjust NPM installation 2017-05-23 15:43:08 +02:00
Erik Huelsmann
5390be8aac * Make sure 'uglify' is installed as 'make dojo' depends on it 2017-05-23 15:21:23 +02:00
John Locke
2738fc3728 Run as www-data user, with permission to write ledgersmb.conf file 2017-01-14 09:07:36 -08:00
Erik Huelsmann
edaa2008af Remove EXPERIMENTAL classification 2017-01-08 21:48:00 +01:00
John Locke
04b1786414 Set correct ssmtp path 2016-09-25 10:52:23 -07:00
John Locke
293fd65da4 Add support for #4 - Make Postgres port configurable at run time 2016-08-20 08:53:37 -07:00
John Locke
0034b44033 Synchronize dependencies with 1.5 branch 2016-05-30 09:07:08 -07:00
5 changed files with 107 additions and 103 deletions

View File

@@ -1,32 +1,20 @@
FROM debian:stretch-slim
FROM debian:stretch
MAINTAINER Freelock john@freelock.com
# Build time variables
ENV LSMB_VERSION 1.6.33
# Install Perl, Tex, Starman, psql client, and all dependencies
# Without libclass-c3-xs-perl, performance is terribly slow...
# Without libclass-accessor-lite-perl, HTML::Entities won't build from CPAN
# libnet-cidr-lite-perl is a dependency for Plack::Builder::Conditionals
# which is being installed from CPAN
# libtest-requires-perl is a dependency of Module-Build-Pluggable-PPPort
# on which HTML::Escape depends
#
# Without libclass-c3-xs-perl, everything grinds to a halt;
# add it, because it's a 'recommends' it the dep tree, which
# we're skipping, normally
#
# 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
RUN 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/man2/ && \
mkdir -p /usr/share/man/man3/ && \
mkdir -p /usr/share/man/man4/ && \
mkdir -p /usr/share/man/man5/ && \
mkdir -p /usr/share/man/man6/ && \
mkdir -p /usr/share/man/man7/ && \
DEBIAN_FRONTEND="noninteractive" apt-get update -q && \
DEBIAN_FRONTEND="noninteractive" apt-get dist-upgrade -y -q && \
DEBIAN_FRONTEND="noninteractive" apt-get -y -q install \
RUN echo "APT::Install-Recommends \"false\";\nAPT::Install-Suggests \"false\";" > /etc/apt/apt.conf.d/00recommends && \
DEBIAN_FRONTEND="noninteractive" apt-mark hold sensible-utils && \
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 \
libcgi-emulate-psgi-perl libcgi-simple-perl libconfig-inifiles-perl \
libdbd-pg-perl libdbi-perl libdata-uuid-perl libdatetime-perl \
@@ -39,16 +27,15 @@ RUN echo -n "APT::Install-Recommends \"0\";\nAPT::Install-Suggests \"0\";\n" >>
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 \
libpgobject-util-dbadmin-perl libplack-perl libfile-find-rule-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 \
libnet-cidr-lite-perl libtest-requires-perl \
texlive-latex-recommended texlive-fonts-recommended \
libclass-c3-xs-perl \
texlive-latex-recommended \
texlive-xetex fonts-liberation \
starman \
libopenoffice-oodoc-perl \
@@ -56,27 +43,52 @@ RUN echo -n "APT::Install-Recommends \"0\";\nAPT::Install-Suggests \"0\";\n" >>
lsb-release && \
echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list && \
(wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -) && \
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 git cpanminus make gcc libperl-dev && \
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 && \
rm -f /tmp/ledgersmb-$LSMB_VERSION.tar.gz && \
cpanm --notest \
--with-feature=starman \
--with-feature=latex-pdf-ps \
--with-feature=openoffice \
--installdeps /srv/ledgersmb/ && \
apt-get purge -q -y git cpanminus make gcc libperl-dev && \
apt-get autoremove -q -y && \
apt-get autoclean -q && \
rm -rf ~/.cpanm/ && \
rm -rf /var/lib/apt/lists/* /usr/share/man/*
DEBIAN_FRONTEND="noninteractive" apt-get -y update && \
DEBIAN_FRONTEND="noninteractive" apt-get -y install postgresql-client && \
DEBIAN_FRONTEND="noninteractive" apt-get -y autoremove && \
DEBIAN_FRONTEND="noninteractive" apt-get -y autoclean && \
rm -rf /var/lib/apt/lists/*
WORKDIR /srv/ledgersmb
# Build time variables
ENV LSMB_VERSION 1.7.0-alpha1
ENV NODE_PATH /usr/local/lib/node_modules
# master requirements
###########################################################
# Java & Nodejs for doing Dojo build
# Uglify needs to be installed right before 'make dojo'?!
# These packages are only needed during the dojo build
ENV DOJO_Build_Deps git make gcc libperl-dev curl nodejs
# These packages can be removed after the dojo build
ENV DOJO_Build_Deps_removal ${DOJO_Build_Deps} nodejs
RUN wget --quiet -O - https://deb.nodesource.com/setup_8.x | bash -
RUN DEBIAN_FRONTEND="noninteractive" apt-get -y update && \
DEBIAN_FRONTEND="noninteractive" apt-get -y install ${DOJO_Build_Deps} && \
cd /srv && \
git clone --recursive -b $LSMB_VERSION https://github.com/ledgersmb/LedgerSMB.git ledgersmb && \
cd ledgersmb && \
(curl -L https://cpanmin.us | perl - App::cpanminus) && \
cpanm --quiet --notest \
--with-feature=starman \
--with-feature=latex-pdf-ps \
--with-feature=openoffice \
--installdeps . && \
npm install uglify-js@">=2.0 <3.0" && \
make dojo && \
DEBIAN_FRONTEND="noninteractive" apt-get -y purge ${DOJO_Build_Deps_removal} && \
rm -rf /usr/local/lib/node_modules && \
DEBIAN_FRONTEND="noninteractive" apt-get -y autoremove && \
DEBIAN_FRONTEND="noninteractive" apt-get -y autoclean && \
rm -rf ~/.cpanm && \
rm -rf /var/lib/apt/lists/*
# Cleanup args that are for internal use
ENV DOJO_Build_Deps=
ENV DOJO_Build_Deps_removal=
ENV NODE_PATH=
# Configure outgoing mail to use host, other run time variable defaults

View File

@@ -3,10 +3,10 @@ Dockerfile for LedgerSMB Docker image
# Supported tags
- `1.7`, `1.7.x` - Latest official release from 1.7 branch
- `1.6`, `1.6.x` - Latest release tarball from 1.6 branch
- `1.5`, `1.5.x` - Latest release tarball from 1.5 branch
- `1.5`, `1.5.x`, `latest` - Latest release tarball from 1.5 branch
- `1.4`, `1.4.x` - Latest tagged release of git 1.4 branch
- `master` - Master branch from git, unstable
- `master-dev`, `1.5-dev` - Containers to kick off a development setup
# What is LedgerSMB?
@@ -35,53 +35,67 @@ to add the TLS layer by applying Nginx or Apache as reverse proxy.
Enabling optional functionalities such as outgoing e-mail and printing
could require additional setup of a mail service or CUPS printer service.
# Quickstart
# How to use this image
The quickest way to get this image up and running is by using the
`docker-compose` file available through the GitHub repository at:
This image can be installed either automatically with the Docker compose file
manually with docker only.
https://github.com/ledgersmb/ledgersmb-docker/blob/1.7/docker-compose.yml
## Docker-Compose installation and start
which sets up both this image and a supporting database image for
production purposes (i.e. with persistent (database) data. The database
username and password are:
This image provides `docker-compose.yml` which can be used to pull related
images, install them, establish an internal network for their communications,
adjust environment variables, start and stop LedgerSMB. The only instructions
required, after the optional edition of the file to adjust the environment
variables, are:
```plain
username: postgres
password: abc
$ docker-compose pull
$ docker-compose up
```
The docker-compose file does *not* set up an Nginx or Apache reverse proxy
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
This section assumes availability of a PostgreSQL server to attach to the
LedgerSMB image as the database server.
### Start a postgres instance
## Start LedgerSMB
```plain
$ docker run -d --name postgres \
-e POSTGRES_PASSWORD=mysecretpassword \
postgres:latest
```
BEWARE: The command above creates a container with the database data stored
*inside* the container. Upon removal of the container, the database data will
be removed too!
To prevent destruction of the database data upon replacement of the container,
please use these commands instead:
```plain
$ docker volume create dbdata
$ docker run -d --name postgres \
-e POSTGRES_PASSWORD=mysecretpassword \
-e PGDATA=/var/lib/postgresql/data/pgdata \
-v dbdata:/var/lib/postgresql/data \
postgres:latest
```
### Start LedgerSMB
```plain
$ docker run -d -p 5762:5762 --name myledger \
-e POSTGRES_HOST=<ip/hostname> ledgersmb/ledgersmb:latest
ledgersmb/ledgersmb:latest
```
This command maps port 5762 of your container to port 5762 in your host. The
web application inside the container should now be accessible through
http://localhost:5762/setup.pl and http://localhost:5762/login.pl.
http://localhost:5762/setup.pl.
Below are more variables which determine container configuration,
like `POSTGRES_HOST` above.
## Set up LedgerSMB
# Set up LedgerSMB
* Visit http://myledger:5762/setup.pl.
* Log in with the "postgres" user and the password `abc` as given above -
or with the credentials of your own database server in case of a manual
setup - and provide the name of a company (= database name) you want to
create.
* Log in with the "postgres" user and the password `mysecretpassword`
and provide the name of a company (= database name) you want to create.
* Go over the steps presented in the browser
Once you have completed the setup steps, you have a fully functional
@@ -131,8 +145,6 @@ affect the performance experience of users.
## Mail configuration
The docker image uses `ssmtp` to send mail.
* `SSMTP_ROOT` (config: `Root`)
* `SSMTP_MAILHUB` (config: `Mailhub`)
* `SSMTP_HOSTNAME` (config: `Hostname`)
@@ -166,18 +178,11 @@ and the startup & config script is /usr/bin/start.sh.
## Issues
If you have any problems with or questions about this image or LedgerSMB,
please contact us on the [mailing list](http://ledgersmb.org/topic/support/mailing-lists-rss-and-nntp-feeds)
or through a [GitHub issue](https://github.com/ledgersmb/ledgersmb-docker/issues).
If you have any problems with or questions about this image or LedgerSMB, please contact us on the [mailing list](http://ledgersmb.org/topic/support/mailing-lists-rss-and-nntp-feeds) or through a [GitHub issue](https://github.com/ledgersmb/ledgersmb-docker/issues).
You can also reach some of the official LedgerSMB maintainers via the
`#ledgersmb` IRC channel on [Freenode](https://freenode.net), or on the
bridged [Matrix](https://matrix.org) room in [#ledgersmb:matrix.org](https://matrix.to/#/#ledgersmb:matrix.org).
The [Riot.im](https://riot.im/app/#/room/#ledgersmb:matrix.org) Matrix client is highly recommended.
You can also reach some of the official LedgerSMB maintainers via the `#ledgersmb` IRC channel on [Freenode](https://freenode.net), or on the bridged [Matrix](https://matrix.org) room in [#ledgersmb:matrix.org](https://matrix.to/#/#ledgersmb:matrix.org). The [Riot.im](https://riot.im/app/#/room/#ledgersmb:matrix.org) Matrix client is highly recommended.
## Contributing
You are invited to contribute new features, fixes, or updates, large or small;
we are always thrilled to receive pull requests, and do our best to process
them as fast as we can.
You are invited to contribute new features, fixes, or updates, large or small; we are always thrilled to receive pull requests, and do our best to process them as fast as we can.

View File

@@ -28,7 +28,7 @@ services:
lsmb:
depends_on:
- postgres
image: ghcr.io/ledgersmb/ledgersmb:1.6
image: ledgersmb/ledgersmb:1.6
networks:
- internal
- default

View File

@@ -20,9 +20,6 @@ EOF
export LSMB_CONFIG_FILE='/tmp/ledgersmb.conf'
fi
if [ ! -f "/tmp/ledgersmb" ]; then
mkdir /tmp/ledgersmb
fi
# Currently unmaintained/untested
# if [ ! -z ${CREATE_DATABASE+x} ]; then
# perl tools/dbsetup.pl --company $CREATE_DATABASE \
@@ -30,20 +27,10 @@ fi
# --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
# --preload-app allows application initialization to kill the entire
# starman instance (instead of just the worker, which will immediately
# get restarted); it also has a positive effect on memory use
exec starman --port 5762 --workers ${LSMB_WORKERS:-5} --preload-app bin/ledgersmb-server.psgi
exec starman --port 5762 --workers ${LSMB_WORKERS:-5} -I lib -I old/lib \
--preload-app bin/ledgersmb-server.psgi

View File

@@ -1,6 +1,6 @@
#!/bin/bash
ConfiguredComment='# install script update_ssmtp.sh has configured ssmtp'
grep -qc "$ConfiguredComment" /etc/ssmtp/ssmtp.conf && {
grep -qc "$ConfiguredComment" /etc/ssmtp.conf && {
echo "smtp configured."
exit
}