Compare commits

..

33 Commits

Author SHA1 Message Date
John Locke
b544f42752 1.4.39 2017-03-13 13:55:13 -07:00
John Locke
57e54605fa 1.4.38 2017-01-23 06:48:08 -08:00
John Locke
308171c708 1.4.37 2017-01-08 11:00:28 -08:00
John Locke
b549b8a143 1.4.36 2016-12-12 08:40:19 -08:00
John Locke
9cda9c1dd3 1.4.34 2016-10-15 09:48:43 -07:00
John Locke
7761c46712 Set correct ssmtp path 2016-09-25 10:54:26 -07:00
John Locke
3bfa2a5ae3 1.4.33 2016-08-20 09:01:16 -07:00
John Locke
51f3dc8ab8 Add support for #4 - Make Postgres port configurable at run time 2016-08-20 08:58:19 -07:00
John Locke
2629d4052f r1.4.1 2016-07-31 08:28:38 -07:00
John Locke
c022a84d14 1.4.30 2016-07-24 08:07:26 -07:00
John Locke
2add82e070 Update for 1.4.29, streamlined install process 2016-05-30 08:52:19 -07:00
John Locke
beab963859 Add LaTeX::Driver to image. 2016-05-03 10:17:26 -07:00
John Locke
6772ccbe4d Update version to 1.4.28 2016-05-03 08:22:58 -07:00
John Locke
b7ac6ef4cb Update version to 1.4.27 2016-04-10 06:23:53 -07:00
John Locke
ddd44782c7 v1.4.26 2016-03-12 11:30:34 -08:00
John Locke
4448e9b270 Version 1.4.25 2016-02-18 13:15:50 -08:00
John Locke
3b3613dd13 Add xetex back to the container, to support pdf invoices 2016-02-14 09:53:58 -08:00
John Locke
9a789a8032 Removed missing package. 2016-02-05 13:39:17 -08:00
John Locke
d61ce704c2 Tag new 1.4 version 2016-02-05 13:36:54 -08:00
John Locke
048e003a43 Correct latex dependencies 2016-02-05 11:06:14 -08:00
John Locke
3e3915cfc9 Create 1.4.22 tag 2016-01-02 22:48:15 -08:00
John Locke
30efe577bb Fix grep flag 2015-11-19 12:01:03 -08:00
John Locke
052557897e Patch from dcg: detect /etc/ssmtp.conf changes inside update script, instead of touching a /tmp file 2015-11-19 11:59:35 -08:00
John Locke
0e50f0bada Install texlive-xetex to support xelatex 2015-11-01 09:24:48 -08:00
John Locke
d2faf23967 Try adding an explicit /tmp dir creation to work around an aufs bug 2015-09-21 09:09:17 -07:00
John Locke
ba69402221 Fix dependencies for LaTeX in Dockerfile for 1.4 -- add libtex-encode-perl, remove obsolete libnet-tclink-perl 2015-09-18 14:06:31 -07:00
John Locke
46039f99e9 Change base to Perl:5, add CGI::Compile via cpan 2015-08-28 10:24:52 -07:00
John Locke
f2a7c0ada6 Add devel-trace to image 2015-08-28 10:21:54 -07:00
John Locke
890f0c4931 Update readme for versions built 2015-08-01 10:11:35 -07:00
John Locke
29ff9a39ab README improvements 2015-07-05 13:44:47 -07:00
John Locke
4a4a964975 Fix args for prepare-company-database.pl 2015-07-05 12:17:13 -07:00
John Locke
65bb0d35ff Use create-company-database script for test data creation 2015-07-05 11:48:48 -07:00
John Locke
7f0a677a09 Doc fixes 2015-07-05 09:08:03 -07:00
3 changed files with 80 additions and 52 deletions

View File

@@ -1,50 +1,60 @@
FROM perl:5 FROM perl:5
MAINTAINER Freelock john@freelock.com MAINTAINER Freelock john@freelock.com
# Install Perl, Tex, Starman, psql client, and all dependencies # Install Perl, Tex, Starman, psql client, and all dependencies
RUN DEBIAN_FRONTENT=noninteractive && \ RUN DEBIAN_FRONTENT=noninteractive && \
apt-get update && apt-get -y install \ apt-get update && apt-get -y install \
libcgi-emulate-psgi-perl libcgi-simple-perl libconfig-inifiles-perl \ git \
libdbd-pg-perl libdbi-perl libdatetime-perl \ libdatetime-perl libdbi-perl libdbd-pg-perl \
libdatetime-format-strptime-perl libdigest-md5-perl \ libcgi-simple-perl libtemplate-perl libmime-lite-perl \
libfile-mimeinfo-perl libjson-xs-perl libjson-perl \ liblocale-maketext-lexicon-perl libtest-exception-perl \
liblocale-maketext-perl liblocale-maketext-lexicon-perl \ libtest-trap-perl liblog-log4perl-perl libmath-bigint-gmp-perl \
liblog-log4perl-perl libmime-base64-perl libmime-lite-perl \ libfile-mimeinfo-perl libtemplate-plugin-number-format-perl \
libmath-bigint-gmp-perl libmoose-perl libnumber-format-perl \ libdatetime-format-strptime-perl libconfig-general-perl \
libpgobject-perl libpgobject-simple-perl libpgobject-simple-role-perl \ libdatetime-format-strptime-perl libio-stringy-perl libmoose-perl \
libpgobject-util-dbmethod-perl libplack-perl libtemplate-perl \ libconfig-inifiles-perl libnamespace-autoclean-perl \
libnamespace-autoclean-perl \ libcarp-always-perl libjson-perl \
libtemplate-plugin-latex-perl libtex-encode-perl \ libtemplate-plugin-latex-perl texlive-latex-recommended \
texlive-latex-recommended \ texlive-latex-base texlive-latex-extra \
texlive-xetex \ texlive-xetex \
libxml-twig-perl \
libtex-encode-perl \
libdevel-trace-perl \
starman \ starman \
libopenoffice-oodoc-perl \ postgresql-client-9.4 \
postgresql-client \
ssmtp ssmtp
# Build time variables # Build time variables
ENV LSMB_VERSION 1.5.0-beta6 ENV LSMB_VERSION 1.4.39
# Install LedgerSMB # Install LedgerSMB
RUN cd /srv && \ RUN cd /srv && \
curl -Lo ledgersmb-$LSMB_VERSION.tar.gz https://sourceforge.net/projects/ledger-smb/files/Releases/$LSMB_VERSION/ledgersmb-$LSMB_VERSION.tar.gz/download && \ git clone -b $LSMB_VERSION https://github.com/ledgersmb/LedgerSMB.git ledgersmb
tar -xvzf ledgersmb-$LSMB_VERSION.tar.gz
WORKDIR /srv/ledgersmb WORKDIR /srv/ledgersmb
# 1.5 requirements
# 1.4.29+ requirements
RUN cpanm --quiet --notest \ RUN cpanm --quiet --notest \
--with-feature=starman \ --with-feature=starman \
--with-feature=latex-pdf-ps \ --with-feature=latex-pdf-ps \
--with-feature=openoffice \ --with-feature=openoffice \
--installdeps . --installdeps .
#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 && \
# Configure outgoing mail to use host, other run time variable defaults # Configure outgoing mail to use host, other run time variable defaults
## sSMTP ## sSMTP
ENV SSMTP_ROOT ar@example.com ENV SSMTP_ROOT ar@example.com
ENV SSMTP_MAILHUB 172.17.0.1 ENV SSMTP_MAILHUB 172.17.42.1
ENV SSMTP_HOSTNAME 172.17.0.1 ENV SSMTP_HOSTNAME 172.17.42.1
#ENV SSMTP_USE_STARTTLS #ENV SSMTP_USE_STARTTLS
#ENV SSMTP_AUTH_USER #ENV SSMTP_AUTH_USER
#ENV SSMTP_AUTH_PASS #ENV SSMTP_AUTH_PASS
@@ -52,17 +62,26 @@ ENV SSMTP_FROMLINE_OVERRIDE YES
#ENV SSMTP_AUTH_METHOD #ENV SSMTP_AUTH_METHOD
ENV POSTGRES_HOST postgres 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 && \ RUN chown www-data /etc/ssmtp /etc/ssmtp/ssmtp.conf && \
chmod +x /usr/local/bin/update_ssmtp.sh /usr/local/bin/start.sh && \ chmod +x /usr/bin/update_ssmtp.sh /usr/bin/start.sh && \
mkdir -p /var/www mkdir -p /var/www
# Work around an aufs bug related to directory permissions:
RUN mkdir -p /tmp && \
chmod 1777 /tmp
# Internal Port Expose # Internal Port Expose
EXPOSE 5762 EXPOSE 5000
#USER www-data #USER www-data
CMD ["start.sh"] CMD ["start.sh"]

View File

@@ -5,9 +5,9 @@ This is a work in progress to make a docker image for running LedgerSMB. It shou
# Supported tags and respective `Dockerfile` links # Supported tags and respective `Dockerfile` links
- `dev-master` - Master branch from git, unstable - `1.5`, `dev-master` - Master branch, unstable
- `1.5`, `1.5.x` - Latest release tarball from 1.5 branch - `1.4`, `latest` - Tip of git 1.4 branch
- `1.4`, `latest` - Latest tagged release of git 1.4 branch - `1.3` - Latest 1.3.x release
# What is LedgerSMB? # What is LedgerSMB?
@@ -18,7 +18,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. 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 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. 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.
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 ;-) 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 ;-)
@@ -40,13 +40,13 @@ This image includes `EXPOSE 5432` (the postgres port), so standard container lin
## Set up LedgerSMB ## Set up LedgerSMB
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) 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)
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. 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! Once you have completed the setup, you have a fully functional LedgerSMB instance running!
Visit http://myledger:5762/login.pl to log in and get started. Visit http://localhost:5000/login.pl to log in and get started.
# Updating the LedgerSMB container # Updating the LedgerSMB container
@@ -62,12 +62,26 @@ 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. 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` ### `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. 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. 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 # Troubleshooting/Developing
You can connect to a running container using: You can connect to a running container using:
@@ -81,7 +95,7 @@ Currently the LedgerSMB installation is in /srv/ledgersmb, and the startup/confi
# Supported Docker versions # Supported Docker versions
This image is officially supported on Docker version 1.11.1. This image is officially supported on Docker version 1.7.0.
Support for older versions is provided on a best-effort basis. Support for older versions is provided on a best-effort basis.
@@ -95,8 +109,11 @@ 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). 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 [Vector.im](https://vector.im/beta/#/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).
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 ## Contributing

View File

@@ -1,33 +1,25 @@
#!/bin/bash #!/bin/bash
update_ssmtp.sh update_ssmtp.sh
cd /srv/ledgersmb
if [[ ! -f ledgersmb.conf ]]; then if [[ ! -f ledgersmb.conf ]]; then
cp conf/ledgersmb.conf.default ledgersmb.conf cp ledgersmb.conf.default ledgersmb.conf
sed -i \ sed -i \
-e "s/\(cache_templates = \).*\$/cache_templates = 1/g" \ -e "s/\(cache_templates = \).*\$/cache_templates = 1/g" \
-e "s/\(host = \).*\$/\1$POSTGRES_HOST/g" \ -e "s/\(host = \).*\$/\1$POSTGRES_HOST/g" \
-e "s%\(sendmail = \).*%\1/usr/bin/ssmtp%g" \ -e "s/\(port = \).*\$/\1$POSTGRES_PORT/g" \
-e "s/\(default_db = \).*\$/\1$DEFAULT_DB/g" \
-e "s%\(sendmail = \).*%\1/usr/sbin/ssmtp%g" \
/srv/ledgersmb/ledgersmb.conf /srv/ledgersmb/ledgersmb.conf
fi fi
# Currently unmaintained/untested if [ ! -z ${CREATE_DATABASE+x} ]; then
# if [ ! -z ${CREATE_DATABASE+x} ]; then perl tools/prepare-company-database.pl --company $CREATE_DATABASE \
# perl tools/dbsetup.pl --company $CREATE_DATABASE \ --host $POSTGRES_HOST \
# --host $POSTGRES_HOST \ --owner postgres \
# --postgres_password "$POSTGRES_PASS" --password "$POSTGRES_PASS"
#fi 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 # start ledgersmb
exec starman --port 5762 tools/starman.psgi exec starman tools/starman.psgi