diff --git a/.env b/.env new file mode 100644 index 0000000..dce3e09 --- /dev/null +++ b/.env @@ -0,0 +1 @@ +COMPOSE_PROJECT_NAME=webcdr \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 48abca1..8178d52 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,32 @@ -FROM node:8 +FROM node:8-alpine -RUN apt-get update && \ - apt-get install -y mysql-client-5.5 curl unzip && \ - apt-get clean +LABEL maintainer Pedro Robson Leão -RUN wget https://github.com/ipoddubny/webcdr/archive/master.zip -O /tmp/webcdr.zip && unzip /tmp/webcdr.zip -d /tmp - -WORKDIR /tmp/webcdr-master +ENV APP_HOME=/opt/webcdr-master +ENV ENTRYPOINT=./entrypoint.sh -RUN npm -g install bower browserify && cd public/ && bower install --allow-root && cd .. && npm install && npm run build -CMD node /tmp/webcdr-master/server.js +RUN wget https://github.com/ipoddubny/webcdr/archive/master.zip -O /tmp/webcdr.zip && unzip /tmp/webcdr.zip -d /opt && \ + cd /opt/webcdr-master && \ + apk add --no-cache \ + mysql-client \ + git \ + python3 \ + make && \ + npm -g install \ + bower \ + browserify && \ + cd public/ && \ + bower install --allow-root && \ + cd .. && \ + npm install && \ + npm run build && \ + apk del git python3 make + +WORKDIR ${APP_HOME} + +ADD ${ENTRYPOINT} ${APP_HOME}/ + +EXPOSE 9030 + +ENTRYPOINT [ "./entrypoint.sh" ] diff --git a/README.md b/README.md index b4e7ffb..02377ef 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,52 @@ # docker-webcdr + Build and running webcdr in Docker + + +## build image + +`docker build -t pedrorobsonleao/webcdr .` + +## run image + +```bash +docker run \ + --name webcdr \ + --publish 9030:9030 \ + --env TZ=America/Sao_Paulo \ + --env DB_CLIENT=mysql \ + --env DB_CONNECTION_HOST=db \ + --env DB_CONNECTION_USER=cdrdb \ + --env DB_CONNECTION_PASSWORD=cdrpwd \ + --env DB_CONNECTION_DATABASE=asteriskcdrdb \ + --env DB_CONNECTION_CHARSET=utf8 \ + --env DB_INIT=TRU \ + --env CDR_TABLE=cdr \ + --env SESSION_KEY=123hjhfds7&&&kjfh&&&788 \ + --env AUTH_AD_DOMAIN=exemple \ + --env AUTH_AD_CONNECTION_URL=ldap://server.ip.address \ + --env AUTH_AD_CONNECTION_BASEDN=dc=example,dc=org \ + --env AUTH_AD_CONNECTION_USERNAME=cdruser@example.org \ + --env AUTH_AD_CONNECTION_PASSWORD=cdruser_ad_password \ + --detach \ + pedrorobsonleao/webcr +``` + +## docker-compose + +This version up all insfrastructure with [mysql:5](https://hub.docker.com/_/mysql) amd [node:8-alpine](https://hub.docker.com/_/node/). + +`docker-compose up --detach` + +## how to use + +http://localhost:9030 + +|user|passwort| +|-|-| +|admin|admincdr| + +## references + +* [ipoddubny/webcdr](https://github.com/ipoddubny/webcdr) +* [mifistor/docker-webcdr](https://github.com/mifistor/docker-webcdr) diff --git a/build b/build deleted file mode 100644 index 673472c..0000000 --- a/build +++ /dev/null @@ -1 +0,0 @@ -docker build -t mifistor/webcdr . diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..8091917 --- /dev/null +++ b/build.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +VERSION=${VERSION:-0.9.0-alpine} + +[ "${1}" == "--build" ] && { + toClean=$(docker images | egrep "${USER}/${PWD##*/}|none" | awk '{ print $3 }'); + + [ ! -z "${toClean}" ] && { + docker rmi ${toClean}; + } +} + +time docker build -t ${USER}/${PWD##*/} . && \ +time docker build -t ${USER}/${PWD##*/}:${VERSION} . diff --git a/config.ini b/config.ini deleted file mode 100644 index 6da7b42..0000000 --- a/config.ini +++ /dev/null @@ -1,40 +0,0 @@ -;base timezone, valid values: -; - UTC offset: +0100, -0500 -; - time zone: UTC, US/Pacific, Europe/Brussels -tz=Europe/Moscow - -; database connection settings -[db] -client = mysql - -[db.connection] -host = localhost -user = root -password = -database = asteriskcdrdb -charset=utf8 - -; cdr table name in the database -[cdr] -table = cdr -; idAttribute = id ; primary key in cdr table, default is "id" - -; web session storage parameters -[session] -key = 123hjhfds7&&&kjfh&&&788 - -[web] -; urlPrefix = ; empty by default, set if running webcdr behind a proxying web server like nginx - -[recordings] -pattern = /var/spool/asterisk/monitor/%YYYY%/%MM%/%DD%/*%uniqueid%.wav - -[auth.ad] -domain = example - -[auth.ad.connection] -url = ldap://server.ip.address -baseDN = dc=example,dc=org -username = cdruser@example.org -password = cdruser_ad_password - diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..93129a3 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,51 @@ +version: '3.3' +networks: + pabx_net: + driver: bridge +services: + db: + image: 'mysql:5' + container_name: mysql + environment: + - MYSQL_ROOT_PASSWORD=pwdroot + - MYSQL_DATABASE=asteriskcdrdb + - MYSQL_USER=cdrdb + - MYSQL_PASSWORD=cdrpwd + ports: + - '13306:3306' + volumes: + - 'pabx_db_data:/data' + restart: always + networks: + - pabx_net + cdr: + image: 'pedrorobsonleao/webcdr:0.9.0-alpine' + container_name: webcdr + environment: + - TZ=America/Sao_Paulo + - DB_CLIENT=mysql + - DB_CONNECTION_HOST=db + - DB_CONNECTION_USER=cdrdb + - DB_CONNECTION_PASSWORD=cdrpwd + - DB_CONNECTION_DATABASE=asteriskcdrdb + - DB_CONNECTION_CHARSET=utf8 + - DB_INIT=TRUE + - CDR_TABLE=cdr + - SESSION_KEY=123hjhfds7&&&kjfh&&&788 + - AUTH_AD_DOMAIN=exemple + - 'AUTH_AD_CONNECTION_URL=ldap://server.ip.address' + - 'AUTH_AD_CONNECTION_BASEDN=dc=example,dc=org' + - AUTH_AD_CONNECTION_USERNAME=cdruser@example.org + - AUTH_AD_CONNECTION_PASSWORD=cdruser_ad_password + ports: + - '9030:9030' + volumes: + - 'pabx_web_data:/var/spool/asterisk/monitor' + depends_on: + - db + restart: always + networks: + - pabx_net +volumes: + pabx_db_data: null + pabx_web_data: null diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 0000000..af609a5 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,92 @@ +#!/bin/sh + +APP_HOME="/opt/webcdr-master"; + +cat >> ${APP_HOME}/config.ini <