Compare commits

..

133 Commits

Author SHA1 Message Date
Erik Huelsmann
d9e93cb753 * Automatic Dockerfile update by release process 2020-06-29 08:24:13 +00:00
Erik Huelsmann
001e28e354 * Automatic Dockerfile update by release process 2020-06-21 20:53:08 +00:00
Erik Huelsmann
8c477d3b88 * Automatic Dockerfile update by release process 2020-05-31 11:28:17 +00:00
Erik Huelsmann
4026301526 Update README to list 1.7 and 1.8 tags 2020-05-31 11:24:43 +02:00
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
Erik Huelsmann
1ff4cc42c3 * Add (missing) PostgreSQL repository in sources.list 2018-09-13 21:22:52 +02:00
Erik Huelsmann
26b679fe7d * Automatic Dockerfile update by release process 2018-08-25 12:35:52 +00:00
Erik Huelsmann
82e2dd4839 * Automatic Dockerfile update by release process 2018-07-22 21:55:15 +00:00
Erik Huelsmann
4cb2cad5c1 * Update README.md to mention 1.6 tags 2018-06-29 20:54:44 +02:00
Erik Huelsmann
c5c0575c94 * Automatic Dockerfile update by release process 2018-06-23 18:14:14 +00:00
Erik Huelsmann
b4ed837573 * Automatic Dockerfile update by release process 2018-06-17 10:32:14 +00:00
Erik Huelsmann
fae1cd333e * Fix download link 2018-06-10 14:00:45 +02:00
Erik Huelsmann
75f3dfd642 * Automatic Dockerfile update by release process 2018-06-10 08:43:10 +00:00
Erik Huelsmann
5afb58f246 * Update 1.6 branch to RC4 2018-06-04 23:49:07 +02:00
Erik Huelsmann
a5d89bc9fe * Update release for RC3 2018-06-04 00:38:55 +02:00
Erik Huelsmann
b8795c4811 * Update 1.6 RC2 release 2018-06-03 20:40:38 +02:00
Erik Huelsmann
b828cffad3 * Add option to set the number of Starman workers 2018-05-23 23:22:03 +02:00
Erik Huelsmann
36bc6d5ffc * Adjust database host name so that the Compose setup works out-of-the-box again 2018-05-23 21:45:55 +02:00
Erik Huelsmann
59be4f4afa * Add documentation of the availability of a 'ports' statement
Note that we found in the LedgerSMB Matrix chat channel that users
need more straight forward ways to quickly evaluate our proposition
which they are able to offer if we skip the TLS requirement

Also note that the TLS requirement requires a domain, which some
might not have at the stage where the system is only being evaluated.
2018-05-23 21:40:37 +02:00
Erik Huelsmann
f898c2bb63 * Add back lost dash before 'y' option 2018-05-22 22:11:18 +02:00
Erik Huelsmann
c2573f6a7e * Fix short-option prefixed with double dash 2018-05-22 21:27:57 +02:00
Erik Huelsmann
38ab58e93a * Make Docker build output more compact 2018-05-22 21:05:01 +02:00
Erik Huelsmann
d45d0a7182 * Upgrade Docker 1.6 image to 1.6.0-rc1 2018-05-22 20:45:40 +02:00
Erik Huelsmann
d640f5e6a0 * Update to 1.6.0-beta2 2018-05-13 14:15:33 +02:00
Erik Huelsmann
d7c3bd6038 * There is no starman.psgi anymore. Instead, it's ledgersmb-server.psgi 2018-05-07 00:17:34 +02:00
Erik Huelsmann
9c2c5a20c6 * Update version reference (1.5 -> 1.6) in docker-compose.yml 2018-05-06 13:35:24 +02:00
Erik Huelsmann
ebb6a521ef * Correct dependency reference 2018-05-06 13:15:31 +02:00
Erik Huelsmann
058848a29a * More dependencies taken from the Debian repository 2018-05-06 12:30:30 +02:00
Erik Huelsmann
a0053b33b6 * Add dependency for HTML::Entities to build succesfully 2018-05-06 12:14:00 +02:00
Erik Huelsmann
a5ca6aa894 * Update Dockerfile for 1.6 dependencies and building 1.6 images
Note that 1.6 switches to Stretch as the base image, allowing us to
use more packages from the Debian repository (but we still depend on
un-packaged packages(?))
2018-05-06 00:30:49 +02:00
Erik Huelsmann
c616d6f8ab * Add docker-compose file and add it to the README 2018-03-12 22:39:35 +01:00
Erik Huelsmann
f69a36a5d3 * Automatic Dockerfile update by release process 2018-03-11 10:35:54 +00:00
Erik Huelsmann
dbed029289 * Automatic Dockerfile update by release process 2018-02-26 16:55:54 +00:00
Erik Huelsmann
dfa82a63bf * Correct liberation fonts package name (*2 is available as of stretch) 2018-02-17 21:43:41 +01:00
Erik Huelsmann
9353e8187f * Add fonts missing for xedemo template set 2018-02-17 21:36:25 +01:00
Erik Huelsmann
a1ea9d9895 * Why was curl suddenly gone? Anyway, re-adding 2018-02-14 20:47:55 +01:00
Erik Huelsmann
0f8af754bd * Fix syntax (double &&) which chokes Docker Hub's builds 2018-02-14 20:33:04 +01:00
Erik Huelsmann
da48259b68 Merge pull request #18 from sbts/1.5-dev-enhancement-latest-pg-tools
1.5 - install latest version of `postgresql-client`
2018-02-06 22:17:26 +01:00
sbts
774e6ef6e2 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.
Also ensure
- an upgrade
- and some apt cleanup

are done.
2018-02-07 04:05:30 +08:00
Erik Huelsmann
0d8517ebc4 * Update to 1.5.16 2018-01-28 19:56:26 +01:00
Erik Huelsmann
f7cfcc72ec * Add more documentation regarding container mail configuration 2018-01-24 21:55:29 +01:00
Erik Huelsmann
847efed2d0 * Dockerfile update to track the latest 1.5 2018-01-07 22:10:30 +01:00
Erik Huelsmann
9d5b62b6bb * Close #15 for the 1.5-slim branch 2018-01-06 14:16:56 +01:00
Erik Huelsmann
e23e85fea8 * Clean out man pages for smaller image 2018-01-01 11:44:32 +01:00
Erik Huelsmann
c4a1a6f1cc * Fix PostgreSQL installation 2018-01-01 11:27:39 +01:00
Erik Huelsmann
90764650c5 * Fix PostgreSQL installation 2018-01-01 11:15:39 +01:00
Erik Huelsmann
795fdf3f95 * Fix PostgreSQL installation 2018-01-01 11:05:22 +01:00
Erik Huelsmann
6cceef46f6 * Build on the jessie-slim image for a smaller image 2017-12-31 17:53:32 +01:00
Erik Huelsmann
e29aa14d57 * Remove a few layers from the 1.5 images 2017-12-31 17:46:21 +01:00
Erik Huelsmann
a22ed7ac49 * Automatic Dockerfile update by release process 2017-12-08 16:54:59 +00:00
Erik Huelsmann
1f1df000b8 * Sync rewritten README.md from master 2017-10-30 21:45:58 +01:00
Erik Huelsmann
fe867c9925 * Automatic Dockerfile update by release process 2017-10-29 21:39:46 +00:00
Erik Huelsmann
9ff64318ab * In the 'build LedgerSMB' step, don't change directories 2017-09-20 22:22:22 +02:00
Erik Huelsmann
46ae598da0 * Automatic Dockerfile update by release process 2017-09-18 10:27:13 +00:00
Erik Huelsmann
1387c10fd1 * Automatic Dockerfile update by release process 2017-09-12 19:28:31 +00:00
Erik Huelsmann
cbb3a0d843 * Automatic Dockerfile update by release process 2017-09-03 18:55:01 +00:00
Erik Huelsmann
0e41af2b67 * Since the last command removed the lists, update before installation 2017-08-13 20:49:16 +02:00
Erik Huelsmann
a30d23bbb6 * Remove /var/lib/apt/lists/* for further space savings 2017-08-13 20:34:14 +02:00
Erik Huelsmann
e10bd36b80 * Add back USER statement accidentally removed in d038488 2017-08-06 19:50:32 +02:00
Erik Huelsmann
1a56d1523d * Update Dockerfile with performance dependency
As noted by John, requests improve by a factor 10 (20-30secs -> 2-3secs)
with this dependency in place.
2017-08-04 23:39:18 +02:00
Erik Huelsmann
aa260dcec9 * Automatic Dockerfile update by release process 2017-07-22 19:02:34 +00:00
Erik Huelsmann
402f541a5e * Download from download.ledgersmb.org instead of GitHub
(uploading to GitHub doesn't work for non-tagged releases such as betas)
2017-07-20 22:57:48 +02:00
Erik Huelsmann
9499b6ffc1 Merge pull request #13 from sbts/1.5_don't_write_to_server_dir
drop need to write config file to /srv/ledgersmb
2017-07-09 08:39:58 +02:00
sbts
d0384889a8 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 01:07:04 +08:00
Erik Huelsmann
2d4bb886f8 * Automatic Dockerfile update by release process 2017-06-25 15:44:29 +00:00
Erik Huelsmann
8e3f80f65f * Remove downloaded tar from the resulting container 2017-06-21 00:23:07 +02:00
Erik Huelsmann
cd29bd895f * Remove more temporary artifacts from the build process 2017-06-21 00:03:36 +02:00
Erik Huelsmann
42e6eb783e * Reorganize commands for slimmer image 2017-06-20 07:59:10 +02:00
Erik Huelsmann
09cf2e16b7 Update Dockerfile for 1.5.7 release 2017-06-01 19:13:22 +02:00
Erik Huelsmann
2a5dff2dd7 * Don't build Dojo on release branches: be download pre-built. 2017-06-01 09:18:00 +02:00
Erik Huelsmann
e2bf781058 * Reduce image size further by changing base image 2017-06-01 08:27:51 +02:00
Erik Huelsmann
1148c219ec * Minimize the size of the image (went from 2.6GB to 1.4GB!) 2017-06-01 08:23:00 +02:00
Erik Huelsmann
e5c6072505 * use '--preload-app' to start starman 2017-05-25 16:07:38 +02:00
Erik Huelsmann
728840ce4c * Update Dockerfile to 1.5.6 2017-04-09 14:44:12 +00:00
John Locke
5f45abdf2d Create /tmp/ledgersmb if not exists 2017-03-14 13:50:53 -07:00
John Locke
8afea54d65 Fix ssmtp update script 2017-03-14 13:41:59 -07:00
John Locke
326790de44 Update postgres client libs to 9.6, fixes ledgersmb/ledgersmb#2686 , older pg_dump aborts when connecting to newer postgres server. 2017-03-14 10:15:01 -07:00
Erik Huelsmann
c4a5359b25 * Update to 1.5.5 2017-03-14 14:08:13 +00:00
John Locke
79be91758b Update README on latest branch. 2017-03-13 15:37:12 -07:00
John Locke
4706963a2b 1.5.4 2017-03-13 13:55:57 -07:00
John Locke
2c22bd6bbb 1.5.3 2017-02-11 07:47:00 -08:00
John Locke
d3897c8439 1.5.2 2017-01-23 06:46:44 -08:00
John Locke
6d4d4fa927 Run as www-data user, with permission to write ledgersmb.conf file.
Fixes #6.
2017-01-14 09:09:37 -08:00
John Locke
8f911b4d3e 1.5.1 2017-01-08 10:59:02 -08:00
John Locke
60af8d5d49 Add LPR package to image 2017-01-05 08:48:46 -08:00
John Locke
2bf51fb145 Try different download mirror 2016-12-30 11:02:21 -08:00
John Locke
6e41334061 Try again to get the correct path 2016-12-30 10:43:19 -08:00
John Locke
f3f924eab9 Update to full release path. 2016-12-30 10:19:47 -08:00
John Locke
e456434514 1.5.0 2016-12-30 09:43:11 -08:00
John Locke
71de84bd9e 1.5.0-rc3 2016-12-12 08:38:25 -08:00
John Locke
262bf6e1f4 Set correct ssmtp path 2016-09-25 10:54:16 -07:00
John Locke
fdd2eed8a6 Fix missing && after downloading tarball 2016-08-21 12:45:49 -07:00
John Locke
76c35fa0d5 1.5.0-rc2 2016-08-20 09:13:33 -07:00
John Locke
dc0770e367 1.5.0-rc2 2016-08-20 09:02:15 -07:00
John Locke
3839f3b105 Add support for #4 - Make Postgres port configurable at run time 2016-08-20 08:56:41 -07:00
John Locke
9839ceaa2b Add new libmoosex-nonmoose-perl dependency 2016-05-30 08:58:36 -07:00
John Locke
48f1e0d7bb 1.5 Dockerfile to install from tarball 2016-05-30 00:23:58 -07:00
John Locke
f070b9d6a6 Updates for new dojo build requirements for 1.5/master 2016-05-29 22:32:31 -07:00
John Locke
867f5674f9 Major install changes nearing the 1.5 release candidates 2016-05-14 14:20:54 -07:00
John Locke
7d63b16512 Add LaTeX::Driver to image. 2016-05-03 10:14:33 -07:00
John Locke
7b379e31c5 Bump version 2016-03-28 14:42:37 -07:00
John Locke
74b62255be Merge pull request #1 from maikkeli/dockerfile-reorder
Reorder dockerfile commands to optimise caching of docker layers
2016-01-27 07:51:49 -08:00
maikkeli
34852d3c1d restore comment 2016-01-28 00:58:02 +10:30
maikkeli
469dc75708 Reorder dockerfile commands to optimise caching 2016-01-27 20:23:47 +10:30
John Locke
a057cbdfc5 ledgersmb.conf.default has moved to conf/. Update start.sh. 2016-01-08 09:37:25 -08:00
John Locke
3578ef79e3 Search for perl5lib path -- it has changed on us 2016-01-04 22:04:07 -08:00
John Locke
376ed18c81 Move scripts to /usr/local/bin, cleanup 2016-01-04 22:03:54 -08:00
John Locke
d1ce52d26f 1.5.0-beta3 2016-01-02 22:46:29 -08:00
John Locke
2679a71a79 Fix grep flag 2015-11-19 12:00:43 -08:00
John Locke
11b9c43044 Patch from dcg: detect /etc/ssmtp.conf changes inside update script, instead of touching a /tmp file 2015-11-19 11:58:47 -08:00
John Locke
aa6a9d5b12 Set cpanm to quiet to prevent docker build from interpreting "1" as an error 2015-10-21 12:07:17 -07:00
John Locke
30a4f5ea91 Update readme for versions built 2015-08-01 10:11:44 -07:00
John Locke
2235f035a0 README improvements 2015-07-05 13:44:29 -07:00
John Locke
e20f3a1899 Switch Master branch to use perl:5 base image, and load necessary modules using cpanm 2015-07-05 11:34:01 -07:00
John Locke
07db28af99 Doc fixes 2015-07-05 09:07:43 -07:00
John Locke
2f7155e599 Make master branch track master upstream ledgersmb 2015-07-05 01:10:15 -07:00
5 changed files with 321 additions and 117 deletions

View File

@@ -1,53 +1,89 @@
FROM perl:5
FROM debian:stretch-slim
MAINTAINER Freelock john@freelock.com
# Build time variables
ENV LSMB_VERSION 1.4.24
ENV LSMB_VERSION 1.6.23
# Install Perl, Tex, Starman, psql client, and all dependencies
RUN DEBIAN_FRONTENT=noninteractive && \
apt-get update && apt-get -y install \
git \
libdatetime-perl libdbi-perl libdbd-pg-perl \
libcgi-simple-perl libtemplate-perl libmime-lite-perl \
liblocale-maketext-lexicon-perl libtest-exception-perl \
libtest-trap-perl liblog-log4perl-perl libmath-bigint-gmp-perl \
libfile-mimeinfo-perl libtemplate-plugin-number-format-perl \
libdatetime-format-strptime-perl libconfig-general-perl \
libdatetime-format-strptime-perl libio-stringy-perl libmoose-perl \
libconfig-inifiles-perl libnamespace-autoclean-perl \
libcarp-always-perl libjson-perl \
libtemplate-plugin-latex-perl texlive-latex-recommended \
texlive-latex-base texlive-latex-extra texlive-latex-recommends \
libxml-twig-perl \
libtex-encode-perl \
libdevel-trace-perl \
starman \
postgresql-client-9.4 \
ssmtp
# 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
# Install LedgerSMB
# 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 \
wget ca-certificates gnupg \
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 \
libnet-cidr-lite-perl libtest-requires-perl \
texlive-latex-recommended \
texlive-xetex fonts-liberation \
starman \
libopenoffice-oodoc-perl \
ssmtp \
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/*
RUN cd /srv && \
git clone https://github.com/ledgersmb/LedgerSMB.git ledgersmb
WORKDIR /srv/ledgersmb
RUN git checkout $LSMB_VERSION
#RUN sed -i \
# -e "s/short_open_tag = Off/short_open_tag = On/g" \
# -e "s/post_max_size = 8M/post_max_size = 20M/g" \
# -e "s!^;sendmail_path =.*\$!sendmail_path = /usr/sbin/ssmtp -t!g" \
# /etc/php5/fpm/php.ini && \
# master requirements
# Configure outgoing mail to use host, other run time variable defaults
## sSMTP
ENV SSMTP_ROOT ar@example.com
ENV SSMTP_MAILHUB 172.17.42.1
ENV SSMTP_HOSTNAME 172.17.42.1
ENV SSMTP_MAILHUB 172.17.0.1
ENV SSMTP_HOSTNAME 172.17.0.1
#ENV SSMTP_USE_STARTTLS
#ENV SSMTP_AUTH_USER
#ENV SSMTP_AUTH_PASS
@@ -55,16 +91,14 @@ ENV SSMTP_FROMLINE_OVERRIDE YES
#ENV SSMTP_AUTH_METHOD
ENV POSTGRES_HOST postgres
ENV POSTGRES_PORT 5432
ENV DEFAULT_DB lsmb
COPY start.sh /usr/bin/start.sh
COPY update_ssmtp.sh /usr/bin/update_ssmtp.sh
#RUN cpanm \
# CGI::Compile
COPY start.sh /usr/local/bin/start.sh
COPY update_ssmtp.sh /usr/local/bin/update_ssmtp.sh
RUN chown www-data /etc/ssmtp /etc/ssmtp/ssmtp.conf && \
chmod +x /usr/bin/update_ssmtp.sh /usr/bin/start.sh && \
chmod +x /usr/local/bin/update_ssmtp.sh /usr/local/bin/start.sh && \
mkdir -p /var/www
# Work around an aufs bug related to directory permissions:
@@ -72,7 +106,7 @@ RUN mkdir -p /tmp && \
chmod 1777 /tmp
# Internal Port Expose
EXPOSE 5000
#USER www-data
EXPOSE 5762
USER www-data
CMD ["start.sh"]

192
README.md
View File

@@ -1,112 +1,184 @@
# ledgersmb-docker - EXPERIMENTAL
# ledgersmb-docker
Dockerfile for LedgerSMB Docker image
This is a work in progress to make a docker image for running LedgerSMB. It should not be relied upon for production use!
# Supported tags
# Supported tags and respective `Dockerfile` links
- `1.5`, `dev-master` - Master branch, unstable
- `1.4`, `latest` - Tip of git 1.4 branch
- `1.3` - Latest 1.3.x release
- `1.8` - Preview version for the 1.8 branch
- `1.7`, `1.7.x`, `latest` - Latest official release from 1.7 branch
- `1.6`, `1.6.x`, `latest` - Latest release tarball from 1.6 branch
- `1.5`, `1.5.x` - Latest release tarball from 1.5 branch
- `1.4`, `1.4.x` - Latest tagged release of git 1.4 branch
# What is LedgerSMB?
The LedgerSMB project's priority is to provide an extremely capable yet user-friendly accounting and ERP solution to small to mid-size businesses in all locales where there is interest in using the software. The focus on small to mid-size businesses offers an opportunity to provide a positive user experience in ways which are not present in larger organizations. LedgerSMB ought to strive to be both the ideal SMB accounting/ERP package and also a solution that a start-up will never outgrow. The goals mentioned above will help us provide this ideal solution by allowing us to focus both on technical architecture and on user experience.
LedgerSMB is a user-friendly accounting and ERP solution for small to
mid-size businesses. It comes with support for many languages and support
for different locales.
The project aims to be the solution a start-up never outgrows.
# How is this image designed to be used?
This Docker image is built to provide a self-contained LedgerSMB instance. To be functional, you need to connect it to a running Postgres installation. The official Postgres container will work as is, if you link it to the LedgerSMB instance at startup, or you can provide environment variables to an appropriate Postgres server.
This image is designed to be used in conjunction with a running PostgreSQL
instance (such as may be provided through a separate image).
LedgerSMB provides an http interface built on Starman out of the box, listening on port 5000. We do not recommend exposing this port, because we strongly recommend encrypting all connections using SSL/TLS. For production use, we recommend running a web server configured with SSL, such as Nginx or Apache, and proxying connections to LedgerSMB.
This image exposes port 5762 running a Starman HTTP application server. We
do not recommend exposing this port publicly, because
The other services you will need to put this in production are an SMTP gateway (set environment variables for SSMTP at container startup) and optionally a local print server (e.g. CUPS) installation. The print service is not currently supported in this Docker image, but pull requests are welcomed ;-)
1. The Starman author recommends it
2. We strongly recommend TLS encryption of all application traffic
While the exposed port can be used for quick evaluation, it's recommended
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
The quickest way to get this image up and running is by using the
`docker-compose` file available through the GitHub repository at:
https://github.com/ledgersmb/ledgersmb-docker/blob/1.7/docker-compose.yml
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:
```plain
username: postgres
password: abc
```
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).
# How to use this image
## Manual installation
## Start a postgres instance
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
This image includes `EXPOSE 5432` (the postgres port), so standard container linking will make it automatically available to the linked containers. The default `postgres` user and database are created in the entrypoint with `initdb`.
> The postgres database is a default database meant for use by users, utilities and third party applications.
> [postgresql.org/docs](http://www.postgresql.org/docs/9.3/interactive/app-initdb.html)
This section assumes availability of a PostgreSQL server to attach to the
LedgerSMB image as the database server.
## Start LedgerSMB
docker run --name myledger --link some-postgres:postgres -d ledgersmb/ledgersmb
```plain
$ docker run -d -p 5762:5762 --name myledger \
-e POSTGRES_HOST=<ip/hostname> 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.
Below are more variables which determine container configuration,
like `POSTGRES_HOST` above.
## Set up LedgerSMB
Visit http://myledger:5000/setup.pl (you can forward port 5000 to the host machine, or lookup the IP address for the "myledger" container if running on localhost)
* 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.
* Go over the steps presented in the browser
Log in with the "postgres" user and the password you set when starting up the Postgres container, and provide the name of a company database you want to create.
Once you have completed the setup steps, you have a fully functional
LedgerSMB instance running!
Once you have completed the setup, you have a fully functional LedgerSMB instance running!
Visit http://localhost:5000/login.pl to log in and get started.
Visit http://localhost:5762/login.pl to log in and get started.
# Updating the LedgerSMB container
No persistant data is stored in the LedgerSMB container. All LedgerSMB data is stored in Postgres, so you can stop/destroy/run a new LedgerSMB container, and as long as you link it to the Postgres database, you should be able to pick up where you left off.
No persistant data is stored in the LedgerSMB container.
All LedgerSMB data is stored in Postgres, so you can stop/destroy/run a
new LedgerSMB container as often as you want.
# Environment Variables
The LedgerSMB image uses several environment variables which are easy to miss. While none of the variables are required, they may significantly aid you in using the image.
The LedgerSMB image uses several environment variables. They are all optional.
### `POSTGRES_HOST` = 'postgres'
This environment variable is used to specify the hostname of the Postgres server. The default is "postgres", which will find the container linked in.
## `POSTGRES_HOST`
If you set this to another hostname, LedgerSMB will attempt to connect to that hostname instead.
Default: postgres
### `SSMTP_ROOT` `SSMTP_MAILHUB` `SSMTP_HOSTNAME` `SSMTP_USE_STARTTLS` `SSMTP_AUTH_USER` `SSMTP_AUTH_PASS` `SSMTP_METHOD` `SSMTP_FROMLINE_OVERRIDE`
Specifies the hostname of the PostgreSQL server to connect to. If you use
a PostgreSQL image, set it to the name of that image.
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 already configured to relay mail, this should relay successfully with only those two set.
## `POSTGRES_PORT`
Use the other environment variables to relay mail through another host.
Default: 5432
### `CREATE_DATABASE` `POSTGRES_PASS`
Port on which the PostgreSQL server is running.
If `CREATE_DATABASE` is set, the tools/dbsetup.pl is called with the database name, and the postgres host and password. Currently this is failing with 'Can't locate object method "process_roles" via package "LedgerSMB::Database" at tools/dbsetup.pl line 203.'
## `DEFAULT_DB`
Once this is working, this will provision a new database in the existing server. After the first run, we recommend stopping/removing the LedgerSMB container and starting a new one without these variables -- the previous database should remain present.
Default: lsmb
Set this if you want to automatically log in to a particular LedgerSMB database
without needing to enter the name of that database on the login.pl login screen.
## `LSMB_WORKERS`
Default: 5
Set this if you want to run in a memory-constrained environment. E.g. set it to
2 when running in a 1 GB memory setup. Please do note that this may adversely
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`)
* `SSMTP_USE_STARTTLS` (config: `UseSTARTTLS`)
* `SSMTP_AUTH_USER` (config: `AuthUser`)
* `SSMTP_AUTH_PASS` (config: `AuthPass`)
* `SSMTP_AUTH_METHOD` (config: `AuthMethod`)
* `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
already configured to relay mail, this should relay successfully with only
the root and hostname set.
Use the other environment variables to relay mail through a different host.
Use the [ssmtp.conf man
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.
# Troubleshooting/Developing
You can connect to a running container using:
Currently the LedgerSMB installation is in /srv/ledgersmb
and the startup & config script is /usr/bin/start.sh.
> docker exec -ti myledger /bin/bash
... this will give you a shell inside the container where you can inspect/troubleshoot the installation.
Currently the LedgerSMB installation is in /srv/ledgersmb, and the startup/config script is /usr/bin/start.sh.
# Supported Docker versions
This image is officially supported on Docker version 1.7.0.
Support for older versions is provided on a best-effort basis.
# User Feedback
## Documentation
This is a brand new effort, and we will be adding documentation to the http://ledgersmb.org site when we get a chance.
## 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).
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.
1.4/latest: CREATE_DATABASE env variable currently does not provision a test company.
1.5/dev-master: Currently no way to get a working database. Bugs are filed, blocking 3 different approaches: New database, Upgrade from 1.4, Test company
## 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.

72
docker-compose.yml Normal file
View File

@@ -0,0 +1,72 @@
# This docker-compose file creates one
# compose 'project' consisting of two containers
#
# 1. The PostgreSQL data container
# 2. The LedgerSMB application container
#
# LedgerSMB persists all its data in the database,
# so no special care needs to be taken on
# container upgrades. With PostgreSQL, data is
# persisted across upgrades by the use of a
# special 'dbdata' volume
version: "3.2"
services:
# Note that the container needs to be named "postgres" here,
# because that allows us to use the default hostname ("postgres")
# from the LedgerSMB configuration
postgres:
image: postgres:9.6-alpine
environment:
# Replace the password below for a secure setup
POSTGRES_PASSWORD: abc
PGDATA: /var/lib/postgresql/data/pgdata
networks:
- internal
volumes:
- "pgdata:/var/lib/postgresql/data"
lsmb:
depends_on:
- postgres
image: ledgersmb/ledgersmb:1.6
networks:
- internal
- default
# Uncomment the 'ports' section to map the LedgerSMB container port (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:
# The LSMB_WORKERS environment variable lets you select the number
# of processes serving HTTP requests. The default number of 2 workers
# is geared toward limited-memory situations (1 GB). In order to
# improve the performance experience, increase memory and the
# number of workers
#
LSMB_WORKERS: 2
#
#
# SSMTP_ROOT:
# SSMTP_HOSTNAME:
# SSMTP_MAILHUB:
# SSMTP_AUTH_USER:
# SSMTP_AUTH_PASS:
# SSMTP_AUTH_METHOD:
# SSMTP_USE_STARTTLS:
# SSMTP_FROMLINE_OVERRIDE:
# having the dbdata volume is required to persist our
# data between PostgreSQL container updates; without
# that, the data is contained in the same volume as
# the rest of the image and on update/upgrade, the
# data will be lost.
volumes:
pgdata:
networks:
internal:

View File

@@ -1,23 +1,49 @@
#!/bin/bash
update_ssmtp.sh
cd /srv/ledgersmb
if [[ ! -f ledgersmb.conf ]]; then
cp ledgersmb.conf.default ledgersmb.conf
sed -i \
-e "s/\(cache_templates = \).*\$/cache_templates = 1/g" \
-e "s/\(host = \).*\$/\1$POSTGRES_HOST/g" \
-e "s%\(sendmail = \).*%\1/usr/bin/ssmtp%g" \
/srv/ledgersmb/ledgersmb.conf
cat <<EOF >/tmp/ledgersmb.conf
[main]
cache_templates = 1
[database]
host = $POSTGRES_HOST
port = $POSTGRES_PORT
default_db = $DEFAULT_DB
[mail]
sendmail = /usr/sbin/ssmtp
EOF
export LSMB_CONFIG_FILE='/tmp/ledgersmb.conf'
fi
if [ ! -z ${CREATE_DATABASE+x} ]; then
perl tools/prepare-company-database.pl --company $CREATE_DATABASE \
--host $POSTGRES_HOST \
--owner postgres \
--password "$POSTGRES_PASS"
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 \
# --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
exec starman tools/starman.psgi
# --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

View File

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