mirror of
https://github.com/ledgersmb/ledgersmb-docker.git
synced 2025-10-14 08:10:30 -04:00
Compare commits
65 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
fe867c9925 | ||
|
9ff64318ab | ||
|
46ae598da0 | ||
|
1387c10fd1 | ||
|
cbb3a0d843 | ||
|
0e41af2b67 | ||
|
a30d23bbb6 | ||
|
e10bd36b80 | ||
|
1a56d1523d | ||
|
aa260dcec9 | ||
|
402f541a5e | ||
|
9499b6ffc1 | ||
|
d0384889a8 | ||
|
2d4bb886f8 | ||
|
8e3f80f65f | ||
|
cd29bd895f | ||
|
42e6eb783e | ||
|
09cf2e16b7 | ||
|
2a5dff2dd7 | ||
|
e2bf781058 | ||
|
1148c219ec | ||
|
e5c6072505 | ||
|
728840ce4c | ||
|
5f45abdf2d | ||
|
8afea54d65 | ||
|
326790de44 | ||
|
c4a5359b25 | ||
|
79be91758b | ||
|
4706963a2b | ||
|
2c22bd6bbb | ||
|
d3897c8439 | ||
|
6d4d4fa927 | ||
|
8f911b4d3e | ||
|
60af8d5d49 | ||
|
2bf51fb145 | ||
|
6e41334061 | ||
|
f3f924eab9 | ||
|
e456434514 | ||
|
71de84bd9e | ||
|
262bf6e1f4 | ||
|
fdd2eed8a6 | ||
|
76c35fa0d5 | ||
|
dc0770e367 | ||
|
3839f3b105 | ||
|
9839ceaa2b | ||
|
48f1e0d7bb | ||
|
f070b9d6a6 | ||
|
867f5674f9 | ||
|
7d63b16512 | ||
|
7b379e31c5 | ||
|
74b62255be | ||
|
34852d3c1d | ||
|
469dc75708 | ||
|
a057cbdfc5 | ||
|
3578ef79e3 | ||
|
376ed18c81 | ||
|
d1ce52d26f | ||
|
2679a71a79 | ||
|
11b9c43044 | ||
|
aa6a9d5b12 | ||
|
30a4f5ea91 | ||
|
2235f035a0 | ||
|
e20f3a1899 | ||
|
07db28af99 | ||
|
2f7155e599 |
100
Dockerfile
100
Dockerfile
@@ -1,51 +1,64 @@
|
||||
FROM debian:jessie
|
||||
MAINTAINER Freelock john@freelock.com
|
||||
|
||||
RUN echo -n "APT::Install-Recommends \"0\";\nAPT::Install-Suggests \"0\";\n" >> /etc/apt/apt.conf
|
||||
|
||||
# Install Perl, Tex, Starman, psql client, and all dependencies
|
||||
# Without libclass-c3-xs-perl, performance is terribly slow...
|
||||
RUN DEBIAN_FRONTEND=noninteractive apt-get update && \
|
||||
apt-get dist-upgrade -y && apt-get -y install \
|
||||
libcgi-emulate-psgi-perl libcgi-simple-perl libconfig-inifiles-perl \
|
||||
libdbd-pg-perl libdbi-perl libdatetime-perl \
|
||||
libdatetime-format-strptime-perl libdigest-md5-perl \
|
||||
libfile-mimeinfo-perl libjson-xs-perl libjson-perl \
|
||||
liblocale-maketext-perl liblocale-maketext-lexicon-perl \
|
||||
liblog-log4perl-perl libmime-base64-perl libmime-lite-perl \
|
||||
libmath-bigint-gmp-perl libmoose-perl libnumber-format-perl \
|
||||
libpgobject-perl libpgobject-simple-perl libpgobject-simple-role-perl \
|
||||
libpgobject-util-dbmethod-perl libplack-perl libtemplate-perl \
|
||||
libnamespace-autoclean-perl \
|
||||
libtemplate-plugin-latex-perl libtex-encode-perl \
|
||||
libmoosex-nonmoose-perl libclass-c3-xs-perl \
|
||||
texlive-latex-recommended \
|
||||
texlive-xetex \
|
||||
starman \
|
||||
libopenoffice-oodoc-perl \
|
||||
postgresql-client \
|
||||
ssmtp \
|
||||
lsb-release \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
|
||||
# Build time variables
|
||||
ENV LSMB_VERSION 1.4
|
||||
|
||||
|
||||
# Install PHP5 and modules along with composer binary
|
||||
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 \
|
||||
libnet-tclink-perl \
|
||||
libxml-twig-perl \
|
||||
starman \
|
||||
postgresql-client-9.4 \
|
||||
ssmtp
|
||||
ENV LSMB_VERSION 1.5.13
|
||||
|
||||
# Install LedgerSMB
|
||||
|
||||
RUN cd /srv && \
|
||||
git clone https://github.com/ledgersmb/LedgerSMB.git ledgersmb
|
||||
RUN DEBIAN_FRONTEND=noninteractive apt-get update && \
|
||||
apt-get -y install git cpanminus make gcc libperl-dev && \
|
||||
curl -Lo /tmp/ledgersmb-$LSMB_VERSION.tar.gz "https://download.ledgersmb.org/f/Releases/$LSMB_VERSION/ledgersmb-$LSMB_VERSION.tar.gz" && \
|
||||
tar -xvzf /tmp/ledgersmb-$LSMB_VERSION.tar.gz --directory /srv && \
|
||||
rm -f /tmp/ledgersmb-$LSMB_VERSION.tar.gz && \
|
||||
cpanm --quiet --notest \
|
||||
--with-feature=starman \
|
||||
--with-feature=latex-pdf-ps \
|
||||
--with-feature=openoffice \
|
||||
--installdeps /srv/ledgersmb/ && \
|
||||
apt-get purge -y git cpanminus make gcc libperl-dev && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean && \
|
||||
rm -rf ~/.cpanm/ && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
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
|
||||
@@ -53,17 +66,22 @@ 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
|
||||
|
||||
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
|
||||
|
||||
# Internal Port Expose
|
||||
EXPOSE 5000
|
||||
#USER www-data
|
||||
# Work around an aufs bug related to directory permissions:
|
||||
RUN mkdir -p /tmp && \
|
||||
chmod 1777 /tmp
|
||||
|
||||
# Internal Port Expose
|
||||
EXPOSE 5762
|
||||
|
||||
USER www-data
|
||||
CMD ["start.sh"]
|
||||
|
41
README.md
41
README.md
@@ -1,14 +1,14 @@
|
||||
# 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 and respective `Dockerfile` links
|
||||
|
||||
- `1.5`, `dev-master` - Master branch, unstable
|
||||
- `1.4`, `latest` - Tip of git 1.4 branch
|
||||
- `1.4.12` - Latest stable release (not yet built)
|
||||
- `1.3.45` - Last 1.3.x release (not yet built)
|
||||
- `1.5.x`, `latest` - Latest release tarball from 1.5 branch
|
||||
- `1.4`, `1.4.x` - Latest tagged release of git 1.4 branch
|
||||
- `dev-master` - Master (1.6) branch from git, unstable, updated only on demand
|
||||
- `1.5` - Develop HEAD of 1.5 branch, updated only on demand
|
||||
|
||||
|
||||
# What is LedgerSMB?
|
||||
@@ -19,7 +19,7 @@ The LedgerSMB project's priority is to provide an extremely capable yet user-fri
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
LedgerSMB provides an http interface built on Starman out of the box, listening on port 5762. 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.
|
||||
|
||||
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 ;-)
|
||||
|
||||
@@ -41,17 +41,19 @@ This image includes `EXPOSE 5432` (the postgres port), so standard container lin
|
||||
|
||||
## 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 (you can forward port 5762 to the host machine, or lookup the IP address for the "myledger" container if running on localhost)
|
||||
|
||||
Log in with the "postgres" user and the password you set when starting up the Postgres container.
|
||||
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, you have a fully functional LedgerSMB instance running!
|
||||
|
||||
## Updating the LedgerSMB container
|
||||
Visit http://myledger: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.
|
||||
|
||||
## Environment Variables
|
||||
# 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.
|
||||
|
||||
@@ -61,18 +63,20 @@ This environment variable is used to specify the hostname of the Postgres server
|
||||
|
||||
If you set this to another hostname, LedgerSMB will attempt to connect to that hostname instead.
|
||||
|
||||
## `POSTGRES_PORT` = 5432
|
||||
|
||||
Port to connect to Postgres on. Use to connect to a Postgres server running on an alternate port.
|
||||
|
||||
## `DEFAULT_DB` = lsmb
|
||||
|
||||
Set this if you want to automatically log in to a particular LSMB database.
|
||||
|
||||
### `SSMTP_ROOT` `SSMTP_MAILHUB` `SSMTP_HOSTNAME` `SSMTP_USE_STARTTLS` `SSMTP_AUTH_USER` `SSMTP_AUTH_PASS` `SSMTP_METHOD` `SSMTP_FROMLINE_OVERRIDE`
|
||||
|
||||
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.
|
||||
|
||||
Use the other environment variables to relay mail through another host.
|
||||
|
||||
### `CREATE_DATABASE` `POSTGRES_PASS`
|
||||
|
||||
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.'
|
||||
|
||||
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.
|
||||
|
||||
# Troubleshooting/Developing
|
||||
|
||||
You can connect to a running container using:
|
||||
@@ -86,7 +90,7 @@ Currently the LedgerSMB installation is in /srv/ledgersmb, and the startup/confi
|
||||
|
||||
# Supported Docker versions
|
||||
|
||||
This image is officially supported on Docker version 1.7.0.
|
||||
This image is officially supported on Docker version 1.11.1.
|
||||
|
||||
Support for older versions is provided on a best-effort basis.
|
||||
|
||||
@@ -100,7 +104,8 @@ This is a brand new effort, and we will be adding documentation to the http://le
|
||||
|
||||
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 [Vector.im](https://vector.im/beta/#/room/#ledgersmb:matrix.org) Matrix client is highly recommended.
|
||||
|
||||
|
||||
## Contributing
|
||||
|
||||
|
57
start.sh
57
start.sh
@@ -1,27 +1,48 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [[ -e /tmp/smtpconfig ]]; then
|
||||
echo "smtp configured."
|
||||
else
|
||||
update_ssmtp.sh
|
||||
touch /tmp/smtpconfig
|
||||
fi
|
||||
|
||||
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/dbsetup.pl --company $CREATE_DATABASE \
|
||||
--host $POSTGRES_HOST \
|
||||
--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 --preload-app tools/starman.psgi
|
||||
|
@@ -1,4 +1,9 @@
|
||||
#!/bin/bash
|
||||
ConfiguredComment='# install script update_ssmtp.sh has configured ssmtp'
|
||||
grep -qc "$ConfiguredComment" /etc/ssmtp/ssmtp.conf && {
|
||||
echo "smtp configured."
|
||||
exit
|
||||
}
|
||||
|
||||
sed -i \
|
||||
-e "s/\(root=\).*\$/\1$SSMTP_ROOT/g" \
|
||||
@@ -10,3 +15,4 @@ sed -i \
|
||||
[ -z "$SSMTP_AUTH_PASS" ] || echo "AuthPass=$SSMTP_AUTH_PASS" >> /etc/ssmtp/ssmtp.conf
|
||||
[ -z "$SSMTP_AUTH_METHOD" ] || echo "AuthMethod=$SSMTP_AUTH_METHOD" >> /etc/ssmtp/ssmtp.conf
|
||||
[ -z "$SSMTP_FROMLINE_OVERRIDE" ] || echo "FromLineOverride=$SSMTP_FROMLINE_OVERRIDE" >> /etc/ssmtp/ssmtp.conf
|
||||
echo "$ConfiguredComment" >> /etc/ssmtp/ssmtp.conf
|
||||
|
Reference in New Issue
Block a user