From 0faf9432ce15e9f447efd1841059728f5e64a3d0 Mon Sep 17 00:00:00 2001 From: Alexey Simakov Date: Thu, 4 Feb 2021 15:32:28 +0300 Subject: [PATCH] Add Dockerfile, compose, configs(ref #32) --- Dockerfile | 48 ++++++++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 24 ++++++++++++++++++++++ docker/entrypoint.sh | 39 +++++++++++++++++++++++++++++++++++ docker/xabber.conf | 12 +++++++++++ 4 files changed, 123 insertions(+) create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100755 docker/entrypoint.sh create mode 100644 docker/xabber.conf diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..9f490cc0 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,48 @@ +FROM ubuntu:20.04 + +ARG DEBIAN_FRONTEND=noninteractive +RUN apt-get -y update && \ + buildDeps="ca-certificates \ + apt-utils \ + curl \ + gcc \ + make \ + expat \ + libexpat1-dev \ + git \ + erlang" && \ + apt-get install -y --no-install-recommends ${buildDeps} && \ + apt-get autoremove -y && \ + apt-get clean -y + +RUN mkdir /app +WORKDIR /app + +RUN mkdir ./xabber-websocket && \ + cd xabber-websocket && \ + curl -sL https://github.com/redsolution/xabber-websocket/archive/0.3.1.tar.gz | \ + tar -zx --strip-components=1 && \ + make + +FROM ubuntu:20.04 + +RUN apt-get -y update && \ + buildDeps="curl \ + nginx" && \ + apt-get install -y --no-install-recommends ${buildDeps} && \ + apt-get autoremove -y && \ + apt-get clean -y + +RUN mkdir /app +WORKDIR /app + +COPY --from=0 /app/xabber-websocket/_rel/xabber_ws/ ./xabber_ws/ +RUN rm -rf /etc/nginx/sites-enabled/default +COPY ./docker/xabber.conf /etc/nginx/conf.d/ + +COPY . ./ + +COPY ./docker/entrypoint.sh /usr/local/bin/ +ENTRYPOINT [ "/usr/local/bin/entrypoint.sh" ] + +CMD [ "/usr/sbin/nginx", "-g", "daemon off;" ] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..06be15ae --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,24 @@ +version: '3.4' +services: + xabber: + build: ./ + ports: + - 3080:80 + - 3081:8080 # HOST:CONTAINER + restart: always + environment: + CONNECTION_URL: "'ws://localhost:3081/websocket'" + LOG_LEVEL: "'WARN'" + + # ALL VALUES SHOULD BE QUOTED, STRINGS DOUBLE QUOTED + # because first quotes will be dropped at run time in ENTRYPOINT + + # DEBUG + # XABBER_ACCOUNT_URL + # API_SERVICE_URL + # USE_SOCIAL_AUTH + # DEFAULT_LOGIN_SCREEN + # STORAGE_NAME_ENDING + # TURN_SERVERS_LIST + # DISABLE_LOOKUP_WS + # REGISTER_XMPP_ACCOUNT diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh new file mode 100755 index 00000000..41169fb1 --- /dev/null +++ b/docker/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +echo 'Start Xabber WS Server...' +/app/xabber_ws/bin/xabber_ws start +echo 'Start Xabber WS Server - OK' + +cd /app +cp ./example_index.html ./index.html + +VARS=( + CONNECTION_URL + LOG_LEVEL + DEBUG + XABBER_ACCOUNT_URL + API_SERVICE_URL + USE_SOCIAL_AUTH + DEFAULT_LOGIN_SCREEN + STORAGE_NAME_ENDING + TURN_SERVERS_LIST + DISABLE_LOOKUP_WS + REGISTER_XMPP_ACCOUNT +) +for var in ${VARS[@]} +do + echo "Check $var in index.html" + if [ -z ${!var+x} ]; then + echo "$var is empty" + else + grep -q "$var" ./index.html + if [[ $? -eq 0 ]]; then + echo "Replace $var in index.html" + sed "s#$var.*#$var: ${!var},#" ./index.html > ./new_index.html && mv ./new_index.html ./index.html + else + echo "Add value var to index.html" + sed "s/xabber.configure({/a $var: ${!var}," ./index.html > ./new_index.html && mv ./new_index.html ./index.html + fi + fi +done + +exec "$@" diff --git a/docker/xabber.conf b/docker/xabber.conf new file mode 100644 index 00000000..ab5ef9c8 --- /dev/null +++ b/docker/xabber.conf @@ -0,0 +1,12 @@ + +server { + listen 80 default_server; + server_name _; + + root /app; + index index.html; + + location / { + try_files $uri $uri/ =404; + } +}