forked from pipo02mix/docker-ejabberd
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
141 lines (123 loc) · 4.09 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
FROM debian:jessie-slim
MAINTAINER Fernando Ripoll <pipo02mix@gmail.com>
ENV EJABBERD_BRANCH=17.04 \
EJABBERD_HOME=/opt/ejabberd \
EJABBERD_SKIP_MODULES_UPDATE=true \
EJABBERD_USER=ejabberd \
EJABBERD_HTTPS=false \
EJABBERD_STARTTLS=true \
EJABBERD_S2S_SSL=true \
EJABBERD_CONTRIB_MODULES=mod_cobrowser \
EJABBERD_ADMINS=admin \
EJABBERD_USERS=admin:password1234 \
EJABBERD_DEBUG_MODE=false \
HOME=$EJABBERD_HOME \
PATH=$EJABBERD_HOME/bin:/usr/sbin:/usr/bin:/sbin:/bin \
DEBIAN_FRONTEND=noninteractive \
XMPP_DOMAIN=localhost \
# Set default locale for the environment
LC_ALL=C.UTF-8 \
LANG=en_US.UTF-8 \
LANGUAGE=en_US.UTF-8
# Add ejabberd user and group
RUN groupadd -r $EJABBERD_USER \
&& useradd -r -m \
-g $EJABBERD_USER \
-d $EJABBERD_HOME \
$EJABBERD_USER
# Install packages and perform cleanup
RUN set -x \
&& buildDeps=' \
git-core \
build-essential \
automake \
libssl-dev \
zlib1g-dev \
libexpat-dev \
libyaml-dev \
libsqlite3-dev \
erlang-src erlang-dev \
' \
&& requiredAptPackages=' \
locales \
ldnsutils \
python2.7 \
python-jinja2 \
ca-certificates \
libyaml-0-2 \
erlang-base erlang-snmp erlang-ssl erlang-ssh erlang-webtool \
erlang-tools erlang-xmerl erlang-corba erlang-diameter erlang-eldap \
erlang-eunit erlang-ic erlang-odbc erlang-os-mon \
erlang-parsetools erlang-percept erlang-typer erlang-inets \
python-mysqldb \
imagemagick \
' \
&& apt-key adv \
--keyserver keys.gnupg.net \
--recv-keys 434975BD900CCBE4F7EE1B1ED208507CA14F4FCA \
&& apt-get update \
&& apt-get install -y $buildDeps $requiredAptPackages --no-install-recommends \
&& dpkg-reconfigure locales && \
locale-gen C.UTF-8 \
&& /usr/sbin/update-locale LANG=C.UTF-8 \
&& echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen \
&& locale-gen \
&& cd /tmp \
&& git clone https://github.com/processone/ejabberd.git \
--branch $EJABBERD_BRANCH --single-branch --depth=1 \
&& cd ejabberd \
&& chmod +x ./autogen.sh \
&& ./autogen.sh \
&& ./configure --enable-user=$EJABBERD_USER \
--prefix=/ \
--enable-all \
--disable-tools \
--disable-pam \
&& make debug=$EJABBERD_DEBUG_MODE \
&& make install \
&& mkdir $EJABBERD_HOME/ssl \
&& mkdir $EJABBERD_HOME/conf \
&& mkdir $EJABBERD_HOME/backup \
&& mkdir $EJABBERD_HOME/upload \
&& mkdir $EJABBERD_HOME/database \
&& mkdir $EJABBERD_HOME/module_source \
&& cd $EJABBERD_HOME \
&& rm -rf /tmp/ejabberd \
&& rm -rf /etc/ejabberd \
&& ln -sf $EJABBERD_HOME/conf /etc/ejabberd \
&& chown -R $EJABBERD_USER: $EJABBERD_HOME \
&& rm -rf /var/lib/apt/lists/* \
&& apt-get purge -y --auto-remove $buildDeps
# Wrapper for setting config on disk from environment
# allows setting things like XMPP domain at runtime
ADD ./run.sh /sbin/run
# Add run scripts
ADD ./scripts $EJABBERD_HOME/scripts
# Copy auth module
COPY extauth $EJABBERD_HOME/extauth
# Copy init script run by k8s when it is started
COPY init.sh $EJABBERD_HOME/
# Add config templates
ADD ./conf /opt/ejabberd/conf
# Set ejabberd user as owner of the main folder
RUN chown ejabberd:ejabberd -R $EJABBERD_HOME
# Continue as user
USER $EJABBERD_USER
# Move mod cobrowser to the installation folder
COPY ./mod_cobrowser $EJABBERD_HOME/mod_cobrowser
RUN mkdir -p $EJABBERD_HOME/.ejabberd-modules/sources/mod_cobrowser
# Run ejabberd to install mod cobrowser
RUN run configure
# Clean contrib modules for next run
ENV EJABBERD_CONTRIB_MODULES=
# Remove first start done file to be able to start normally when k8s starts the contianer
USER root
RUN rm $EJABBERD_HOME/first-start-done
RUN rm ${EJABBERD_HOME}/conf/ejabberd.yml
RUN rm -rf ${EJABBERD_HOME}/mod_cobrowser
RUN chown ejabberd:ejabberd -R $EJABBERD_HOME
# Continue as user
USER $EJABBERD_USER
# Set workdir to ejabberd root
WORKDIR $EJABBERD_HOME
EXPOSE 4560 5222 5269 5280 5443 5225