Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 0 additions & 8 deletions .idea/docker-osticket.iml

This file was deleted.

6 changes: 0 additions & 6 deletions .idea/encodings.xml

This file was deleted.

8 changes: 0 additions & 8 deletions .idea/modules.xml

This file was deleted.

5 changes: 0 additions & 5 deletions .idea/scopes/scope_settings.xml

This file was deleted.

6 changes: 0 additions & 6 deletions .idea/vcs.xml

This file was deleted.

146 changes: 115 additions & 31 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,27 +1,13 @@
# Deployment doesn't work on Alpine
FROM php:7.3-cli AS deployer
ENV OSTICKET_VERSION=1.14.3
RUN set -x \
&& apt-get update \
&& apt-get install -y git-core \
&& git clone -b v${OSTICKET_VERSION} --depth 1 https://github.com/osTicket/osTicket.git \
&& cd osTicket \
&& php manage.php deploy -sv /data/upload \
# www-data is uid:gid 82:82 in php:7.0-fpm-alpine
&& chown -R 82:82 /data/upload \
# Hide setup
&& mv /data/upload/setup /data/upload/setup_hidden \
&& chown -R root:root /data/upload/setup_hidden \
&& chmod -R go= /data/upload/setup_hidden

FROM php:7.3-fpm-alpine
MAINTAINER Martin Campbell <martin@campbellsoftware.co.uk>
# environment for osticket
ENV OSTICKET_VERSION=1.14.3
ENV HOME=/data
# setup workdir
ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so
WORKDIR /data
COPY --from=deployer /data/upload upload
RUN set -x && \
# Fix iconv bug (empty body when mail encoded in quoted-printable)
apk add gnu-libiconv --update-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/community/ --allow-untrusted && \
# requirements and PHP extensions
apk add --no-cache --update \
wget \
Expand All @@ -34,6 +20,7 @@ RUN set -x && \
openldap \
libintl \
libxml2 \
libzip \
icu \
openssl && \
apk add --no-cache --virtual .build-deps \
Expand All @@ -43,34 +30,131 @@ RUN set -x && \
openldap-dev \
gettext-dev \
libxml2-dev \
libzip-dev \
icu-dev \
autoconf \
g++ \
make \
pcre-dev && \
docker-php-ext-install gd curl ldap mysqli sockets gettext mbstring xml intl opcache && \
pcre-dev \
git && \
docker-php-ext-install gd curl ldap mysqli sockets gettext mbstring xml intl opcache zip && \
docker-php-ext-configure imap --with-imap-ssl && \
docker-php-ext-install imap && \
pecl install apcu && docker-php-ext-enable apcu && \
apk del .build-deps && \
rm -rf /var/cache/apk/* && \
git clone -b v${OSTICKET_VERSION} --depth 1 https://github.com/osTicket/osTicket.git && \
ls -hal && \
cd osTicket && \
php manage.php deploy --setup --git /data/upload && \
ls -hal /data/upload/ && \
cd .. && \
chown -R www-data:www-data /data/upload && \
# Hide setup
mv /data/upload/setup /data/upload/setup_hidden && \
chown -R root:root /data/upload/setup_hidden && \
chmod -R go= /data/upload/setup_hidden && \
# Download languages packs
wget -nv -O upload/include/i18n/fr.phar https://s3.amazonaws.com/downloads.osticket.com/lang/fr.phar && \
wget -nv -O upload/include/i18n/ar.phar https://s3.amazonaws.com/downloads.osticket.com/lang/ar.phar && \
wget -nv -O upload/include/i18n/pt_BR.phar https://s3.amazonaws.com/downloads.osticket.com/lang/pt_BR.phar && \
wget -nv -O upload/include/i18n/it.phar https://s3.amazonaws.com/downloads.osticket.com/lang/it.phar && \
wget -nv -O upload/include/i18n/es_ES.phar https://s3.amazonaws.com/downloads.osticket.com/lang/es_ES.phar && \
wget -nv -O upload/include/i18n/de.phar https://s3.amazonaws.com/downloads.osticket.com/lang/de.phar && \
wget -nv -O upload/include/i18n/fr.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/fr.phar && \
wget -nv -O upload/include/i18n/ar.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/ar.phar && \
wget -nv -O upload/include/i18n/pt_BR.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/pt_BR.phar && \
wget -nv -O upload/include/i18n/it.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/it.phar && \
wget -nv -O upload/include/i18n/es_ES.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/es_ES.phar && \
wget -nv -O upload/include/i18n/de.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/de.phar && \
wget -nv -O upload/include/i18n/sq.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/sq.phar && \
wget -nv -O upload/include/i18n/ar_EG.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/ar_EG.phar && \
wget -nv -O upload/include/i18n/az.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/az.phar && \
wget -nv -O upload/include/i18n/eu.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/eu.phar && \
wget -nv -O upload/include/i18n/bn.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/bn.phar && \
wget -nv -O upload/include/i18n/bs.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/bs.phar && \
wget -nv -O upload/include/i18n/bg.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/bg.phar && \
wget -nv -O upload/include/i18n/ca.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/ca.phar && \
wget -nv -O upload/include/i18n/zh_CN.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/zh_CN.phar && \
wget -nv -O upload/include/i18n/zh_TW.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/zh_TW.phar && \
wget -nv -O upload/include/i18n/hr.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/hr.phar && \
wget -nv -O upload/include/i18n/cd.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/cs.phar && \
wget -nv -O upload/include/i18n/da.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/da.phar && \
wget -nv -O upload/include/i18n/nl.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/nl.phar && \
wget -nv -O upload/include/i18n/en_GB.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/en_GB.phar && \
wget -nv -O upload/include/i18n/et.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/et.phar && \
wget -nv -O upload/include/i18n/fi.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/fi.phar && \
wget -nv -O upload/include/i18n/gl.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/gl.phar && \
wget -nv -O upload/include/i18n/ka.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/ka.phar && \
wget -nv -O upload/include/i18n/el.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/el.phar && \
wget -nv -O upload/include/i18n/he.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/he.phar && \
wget -nv -O upload/include/i18n/hi.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/hi.phar && \
wget -nv -O upload/include/i18n/hu.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/hu.phar && \
wget -nv -O upload/include/i18n/is.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/is.phar && \
wget -nv -O upload/include/i18n/id.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/id.phar && \
wget -nv -O upload/include/i18n/ja.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/ja.phar && \
wget -nv -O upload/include/i18n/km.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/km.phar && \
wget -nv -O upload/include/i18n/ko.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/ko.phar && \
wget -nv -O upload/include/i18n/lv.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/lv.phar && \
wget -nv -O upload/include/i18n/lt.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/lt.phar && \
wget -nv -O upload/include/i18n/mk.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/mk.phar && \
wget -nv -O upload/include/i18n/ms.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/ms.phar && \
wget -nv -O upload/include/i18n/mn.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/mn.phar && \
wget -nv -O upload/include/i18n/no.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/no.phar && \
wget -nv -O upload/include/i18n/fa.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/fa.phar && \
wget -nv -O upload/include/i18n/pl.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/pl.phar && \
wget -nv -O upload/include/i18n/ro.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/ro.phar && \
wget -nv -O upload/include/i18n/ru.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/ru.phar && \
wget -nv -O upload/include/i18n/sr.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/sr.phar && \
wget -nv -O upload/include/i18n/sr_CS.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/sr_CS.phar && \
wget -nv -O upload/include/i18n/sk.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/sk.phar && \
wget -nv -O upload/include/i18n/sl.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/sl.phar && \
wget -nv -O upload/include/i18n/es_AR.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/es_AR.phar && \
wget -nv -O upload/include/i18n/es_MX.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/es_MX.phar && \
wget -nv -O upload/include/i18n/sw.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/sw.phar && \
wget -nv -O upload/include/i18n/sv_SE.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/sv_SE.phar && \
wget -nv -O upload/include/i18n/th.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/th.phar && \
wget -nv -O upload/include/i18n/tr.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/tr.phar && \
wget -nv -O upload/include/i18n/uk.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/uk.phar && \
wget -nv -O upload/include/i18n/ur_IN.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/ur_IN.phar && \
wget -nv -O upload/include/i18n/ur_PK.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/ur_PK.phar && \
wget -nv -O upload/include/i18n/vi.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/vi.phar && \
mv upload/include/i18n upload/include/i18n.dist && \
# Download LDAP plugin
# Download official plugins
wget -nv -O upload/include/plugins/auth-ldap.phar https://s3.amazonaws.com/downloads.osticket.com/plugin/auth-ldap.phar && \
wget -nv -O upload/include/plugins/auth-passthru.phar https://s3.amazonaws.com/downloads.osticket.com/plugin/auth-passthru.phar && \
wget -nv -O upload/include/plugins/storage-fs.phar https://s3.amazonaws.com/downloads.osticket.com/plugin/storage-fs.phar && \
wget -nv -O upload/include/plugins/storage-s3.phar https://s3.amazonaws.com/downloads.osticket.com/plugin/storage-s3.phar && \
wget -nv -O upload/include/plugins/audit.phar https://s3.amazonaws.com/downloads.osticket.com/plugin/audit.phar && \
# Download community plugins (https://forum.osticket.com/d/92286-resources-for-osticket)
## Archiver
git clone https://github.com/clonemeagain/osticket-plugin-archiver upload/include/plugins/archiver && \
## Attachment Preview
git clone https://github.com/clonemeagain/attachment_preview upload/include/plugins/attachment-preview && \
## Auto Closer
git clone https://github.com/clonemeagain/plugin-autocloser upload/include/plugins/auto-closer && \
## Fetch Note
git clone https://github.com/bkonetzny/osticket-fetch-note upload/include/plugins/fetch-note && \
## Field Radio Buttons
git clone https://github.com/Micke1101/OSTicket-plugin-field-radiobuttons upload/include/plugins/field-radiobuttons && \
## Mentioner
git clone https://github.com/clonemeagain/osticket-plugin-mentioner upload/include/plugins/mentioner && \
## Multi LDAP Auth
git clone https://github.com/philbertphotos/osticket-multildap-auth upload/include/plugins/multi-ldap && \
mv upload/include/plugins/multi-ldap/multi-ldap/* upload/include/plugins/multi-ldap/ && \
rm -rf upload/include/plugins/multi-ldap/multi-ldap && \
## Prevent Autoscroll
git clone https://github.com/clonemeagain/osticket-plugin-preventautoscroll upload/include/plugins/prevent-autoscroll && \
## Rewriter
git clone https://github.com/clonemeagain/plugin-fwd-rewriter upload/include/plugins/rewriter && \
## Slack
git clone https://github.com/clonemeagain/osticket-slack upload/include/plugins/slack && \
## Teams (Microsoft)
git clone https://github.com/ipavlovi/osTicket-Microsoft-Teams-plugin upload/include/plugins/teams && \
# Create msmtp log
touch /var/log/msmtp.log && \
chown www-data:www-data /var/log/msmtp.log && \
# File upload permissions
mkdir -p /var/tmp/nginx && \
chown nginx:www-data /var/tmp/nginx && chmod g+rx /var/tmp/nginx
chown nginx:www-data /var/tmp/nginx && chmod g+rx /var/tmp/nginx && \
# Cleanup
rm -rf /data/osTicket && \
find . \( -name ".git" -o -name ".gitignore" -o -name ".gitmodules" -o -name ".gitattributes" \) -exec rm -rf -- {} + && \
rm -rf /var/cache/apk/* && \
apk del .build-deps
COPY files/ /
VOLUME ["/data/upload/include/plugins","/data/upload/include/i18n","/var/log/nginx"]
EXPOSE 80
CMD ["/data/bin/start.sh"]
CMD ["/data/bin/start.sh"]
29 changes: 24 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ Docker image for running version 1.14.3 of [OSTicket](http://osticket.com/).

This image has been created from the original docker-osticket image by [Petter A. Helset](mailto:petter@helset.eu).

It has a few modifications:
# Features

* Documentation added, hurray!
* Base OS image fixed to Alpine Linux
* AJAX issues fixed that made original image unusable
* Now designed to work with a linked [MySQL](https://registry.hub.docker.com/u/library/mysql/) docker container.
* Based on Alpine Linux
* Works with linked [MySQL](https://registry.hub.docker.com/u/library/mysql/) docker container.
* Automates configuration file & database installation
* EMail support
* Support for docker secrets
* Comes with almost all available plugins and languages

OSTicket is being served by [nginx](http://wiki.nginx.org/Main) using [PHP-FPM](http://php-fpm.org/) with PHP 7.2.
PHP7's [mail](http://php.net/manual/en/function.mail.php) function is configured to use [msmtp](http://msmtp.sourceforge.net/) to send out-going messages.
Expand Down Expand Up @@ -206,6 +206,14 @@ For example: `https://help.example.com/osticket`. Defaults to `http://localhost:
This has no effect if the database has already been installed. In this case, you should change the Helpdesk URL in
*System Settings and Preferences* in the admin control panel.

`LANGUAGE`

Set the system language. Choose one of the following language codes. Default is `en_US`.

`bg` `cd` `en_GB` `es_MX` `fi` `hi` `is` `km` `lv` `nl` `ro` `sq` `sw` `ur_IN` `zh_CN` `ar` `bn` `da` `en_US` `et` `fr`
`hr` `it` `ko` `mk` `no` `ru` `sr` `th` `ur_PK` `zh_TW` `ar_EG` `bs` `de` `es_AR` `eu` `gl` `hu` `ja` `mn` `pl` `sk`
`sr_CS` `tr` `az` `ca` `el` `es_ES` `fa` `he` `id` `ka` `lt` `ms` `pt_BR` `sl` `sv_SE` `uk` `vi`

## Database Installation Only

The remaining environmental variables can be used as a convenience to provide defaults during the automated database
Expand Down Expand Up @@ -236,6 +244,17 @@ User name to use for automatically created administrative user. Defaults to 'ost

Password to use for automatically created administrative user. Defaults to 'Admin1'.

# Docker secrets and passwords from files

Instead of the environment variables with clear text passwords the following variables can be set to file paths inside
the container to load passwords from these:

`MYSQL_PASSWORD_FILE`, `INSTALL_SECRET_FILE`, `ADMIN_PASSWORD_FILE`, `SMTP_PASSWORD_FILE`

This allows docker secrets where passwords are mounted under `/run/secrets/mydockersecretname`.

A working example with external docker secret for docker swarm can be found in `docker-compose-swarm.yml` in the github repo.

# Modifications

This image was put together relatively quickly and could probably be improved to meet other use cases.
Expand Down
74 changes: 74 additions & 0 deletions docker-compose-swarm.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Docker stack example for a complete osticket with mysql server and docker secrets for testing purposes.
# DO NOT USE IN PRODUCTION WITHOUT MODIFICATION!
#
# Docker secrets needs swarm
# docker swarm init
# Create a secret with
# "printf "ThisIsADockerSecret" | docker secret create osticket.mysql_password -"
# Run as docker stack
# docker stack deploy --compose-file docker-compose.yml osticket
---
version: "3.4"
services:
mariadb:
image: mariadb
secrets:
- osticket.mysql_root_password
- osticket.mysql_password
environment:
MYSQL_DATABASE: osticket
MYSQL_USER: osticket
# mariadb supports also docker secrets
MYSQL_PASSWORD_FILE: /run/secrets/osticket.mysql_password
MYSQL_ROOT_PASSWORD_FILE: /run/secrets/osticket.mysql_root_password
# MYSQL_PASSWORD: osticketsecret
# MYSQL_ROOT_PASSWORD: osticketsecret
networks:
- database
volumes:
- mysql_data:/var/lib/mysql
osticket:
image: rlieback/osticket
secrets:
- osticket.admin_password
- osticket.mysql_password
- osticket.install_secret
- osticket.smtp_password
environment:
ADMIN_USERNAME: ostadmin
MYSQL_HOST: mariadb
MYSQL_DATABASE: osticket
MYSQL_USER: osticket
# Change to en_US or comment out for default language
LANGUAGE: en_US
MYSQL_PASSWORD_FILE: /run/secrets/osticket.mysql_password
INSTALL_SECRET_FILE: /run/secrets/osticket.install_secret
ADMIN_PASSWORD_FILE: /run/secrets/osticket.admin_password
SMTP_PASSWORD_FILE: /run/secrets/osticket.smtp_password
# MYSQL_PASSWORD: osticket
# INSTALL_SECRET: mysecret897j98uemlrk09eums09duskd9jpsrds
# ADMIN_PASSWORD: admin
# SMTP_HOST: mymailserver.com
depends_on:
- mariadb
networks:
- database
ports:
- "8080:80"
networks:
database:
driver: overlay
attachable: true
volumes:
mysql_data:
secrets:
osticket.admin_password:
external: true
osticket.mysql_password:
external: true
osticket.mysql_root_password:
external: true
osticket.smtp_password:
external: true
osticket.install_secret:
external: true
Loading