Compare commits

..

34 Commits

Author SHA1 Message Date
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
4 changed files with 88 additions and 80 deletions

View File

@@ -1,51 +1,57 @@
FROM perl:5 FROM perl:5
MAINTAINER Freelock john@freelock.com MAINTAINER Freelock john@freelock.com
# Build time variables # Use postgres repository to get newer pg_dump and postgres client
ENV LSMB_VERSION 1.5.0-beta3 RUN wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - && \
echo "deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main 9.6" |tee /etc/apt/sources.list.d/postgres.list
# 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 dist-upgrade -y && apt-get -y install \
git \ libcgi-emulate-psgi-perl libcgi-simple-perl libconfig-inifiles-perl \
libdatetime-perl libdbi-perl libdbd-pg-perl \ libdbd-pg-perl libdbi-perl libdatetime-perl \
libcgi-simple-perl libtemplate-perl libmime-lite-perl \ libdatetime-format-strptime-perl libdigest-md5-perl \
liblocale-maketext-lexicon-perl libtest-exception-perl \ libfile-mimeinfo-perl libjson-xs-perl libjson-perl \
libtest-trap-perl liblog-log4perl-perl libmath-bigint-gmp-perl \ liblocale-maketext-perl liblocale-maketext-lexicon-perl \
libfile-mimeinfo-perl libtemplate-plugin-number-format-perl \ liblog-log4perl-perl libmime-base64-perl libmime-lite-perl \
libdatetime-format-strptime-perl libconfig-general-perl \ libmath-bigint-gmp-perl libmoose-perl libnumber-format-perl \
libdatetime-format-strptime-perl libio-stringy-perl libmoose-perl \ libpgobject-perl libpgobject-simple-perl libpgobject-simple-role-perl \
libconfig-inifiles-perl libnamespace-autoclean-perl \ libpgobject-util-dbmethod-perl libplack-perl libtemplate-perl \
libcarp-always-perl libjson-perl \ libnamespace-autoclean-perl \
libtemplate-plugin-latex-perl texlive-latex-recommended \ libtemplate-plugin-latex-perl libtex-encode-perl \
libnet-tclink-perl \ libmoosex-nonmoose-perl \
libxml-twig-perl \ texlive-latex-recommended \
texlive-xetex \
starman \ starman \
postgresql-client-9.4 \ libopenoffice-oodoc-perl \
postgresql-client-9.6 \
lpr \
ssmtp ssmtp
# Install LedgerSMB # Build time variables
ENV LSMB_VERSION 1.5.6
# Install LedgerSMB
RUN cd /srv && \ RUN cd /srv && \
git clone https://github.com/ledgersmb/LedgerSMB.git ledgersmb curl -Lo ledgersmb-$LSMB_VERSION.tar.gz "http://downloads.sourceforge.net/project/ledger-smb/Releases/$LSMB_VERSION/ledgersmb-$LSMB_VERSION.tar.gz?r=https%3A%2F%2Fsourceforge.net%2Fprojects%2Fledger-smb%2Ffiles%2FReleases%2F$LSMB_VERSION%2F&ts=1483124209&use_mirror=superb-sea2" && \
tar -xvzf ledgersmb-$LSMB_VERSION.tar.gz
# https://sourceforge.net/projects/ledger-smb/files/Releases/$LSMB_VERSION/ledgersmb-$LSMB_VERSION.tar.gz/download && \
WORKDIR /srv/ledgersmb WORKDIR /srv/ledgersmb
RUN git checkout $LSMB_VERSION # 1.5 requirements
RUN cpanm --quiet --notest \
#RUN sed -i \ --with-feature=starman \
# -e "s/short_open_tag = Off/short_open_tag = On/g" \ --with-feature=latex-pdf-ps \
# -e "s/post_max_size = 8M/post_max_size = 20M/g" \ --with-feature=openoffice \
# -e "s!^;sendmail_path =.*\$!sendmail_path = /usr/sbin/ssmtp -t!g" \ --installdeps .
# /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.42.1 ENV SSMTP_MAILHUB 172.17.0.1
ENV SSMTP_HOSTNAME 172.17.42.1 ENV SSMTP_HOSTNAME 172.17.0.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
@@ -53,35 +59,24 @@ 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 start.sh /usr/local/bin/start.sh
COPY update_ssmtp.sh /usr/bin/update_ssmtp.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/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 mkdir -p /var/www
# 1.5 requirements # Work around an aufs bug related to directory permissions:
RUN apt-get install -y \ RUN mkdir -p /tmp && \
libpgobject-perl \ chmod 1777 /tmp
libpgobject-simple-perl \
libpgobject-simple-role-perl \
libpgobject-util-dbmethod-perl
RUN cpanm -nq \
Carton PGObject::Type::BigFloat \
PGObject::Composite \
PGObject::Type::JSON \
PGObject::Type::Composite \
PGObject::Type::DateTime \
App::LedgerSMB::Admin
# Not sure why this is not set correctly, and also why
# it gets overridden here -- moved to start.sh.
# ENV PERL5LIB /usr/local/lib/perl5/site_perl/5.22.0
# Internal Port Expose # Internal Port Expose
EXPOSE 5000 EXPOSE 5762
#USER www-data # If ledgersmb.conf does not exist, www-data user needs to be able to create it.
RUN chown www-data /srv/ledgersmb
USER www-data
CMD ["start.sh"] CMD ["start.sh"]

View File

@@ -1,13 +1,14 @@
# ledgersmb-docker - EXPERIMENTAL # ledgersmb-docker
Dockerfile for LedgerSMB Docker image 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! 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 # Supported tags and respective `Dockerfile` links
- `1.5`, `dev-master` - Master branch, unstable - `1.5.x`, `latest` - Latest release tarball from 1.5 branch
- `1.4`, `latest` - Tip of git 1.4 branch - `1.4`, `1.4.x` - Latest tagged release of git 1.4 branch
- `1.3` - Latest 1.3.x release - `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? # What is LedgerSMB?
@@ -18,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. 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 ;-) 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 +41,13 @@ This image includes `EXPOSE 5432` (the postgres port), so standard container lin
## Set up LedgerSMB ## 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, 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://localhost:5000/login.pl to log in and get started. Visit http://myledger:5762/login.pl to log in and get started.
# Updating the LedgerSMB container # Updating the LedgerSMB container
@@ -62,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. 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:
@@ -87,7 +90,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.7.0. This image is officially supported on Docker version 1.11.1.
Support for older versions is provided on a best-effort basis. Support for older versions is provided on a best-effort basis.
@@ -101,11 +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). 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.
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,25 +1,38 @@
#!/bin/bash #!/bin/bash
update_ssmtp.sh update_ssmtp.sh
cd /srv/ledgersmb
if [[ ! -f ledgersmb.conf ]]; then if [[ ! -f ledgersmb.conf ]]; then
cp ledgersmb.conf.default ledgersmb.conf cp conf/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
if [ ! -z ${CREATE_DATABASE+x} ]; then if [ ! -f "/tmp/ledgersmb" ]; then
perl tools/dbsetup.pl --company $CREATE_DATABASE \ mkdir /tmp/ledgersmb
--host $POSTGRES_HOST \
--postgres_password "$POSTGRES_PASS"
fi 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 # Needed for modules loaded by cpanm
export PERL5LIB=/usr/local/lib/perl5/site_perl/5.22.0 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 tools/starman.psgi exec starman --port 5762 tools/starman.psgi

View File

@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
ConfiguredComment='# install script update_ssmtp.sh has configured ssmtp' 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." echo "smtp configured."
exit exit
} }