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
1 change: 1 addition & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
COMPOSE_PROJECT_NAME=webcdr
37 changes: 28 additions & 9 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -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 <pedro.leao@gmail.com>

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" ]
50 changes: 50 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -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)
1 change: 0 additions & 1 deletion build

This file was deleted.

14 changes: 14 additions & 0 deletions build.sh
Original file line number Diff line number Diff line change
@@ -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} .
40 changes: 0 additions & 40 deletions config.ini

This file was deleted.

51 changes: 51 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -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
92 changes: 92 additions & 0 deletions entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
#!/bin/sh

APP_HOME="/opt/webcdr-master";

cat >> ${APP_HOME}/config.ini <<EOF
;base timezone, valid values:
; - UTC offset: +0100, -0500
; - time zone: UTC, US/Pacific, Europe/Brussels
tz = ${TZ:-"Europe/Moscow"}

; database connection settings
[db]
client = ${DB_CLIENTE:-"mysql"}

[db.connection]
host = ${DB_CONNECTION_HOST:-"localhost"}
user = ${DB_CONNECTION_USER:-"root"}
password = ${DB_CONNECTION_PASSWORD:-""}
database = ${DB_CONNECTION_DATABASE:-"asteriskcdrdb"}
charset = ${DB_CONNECTION_CHARSET:-"utf8"}

; cdr table name in the database
[cdr]
table = ${CDR_TABLE:-"cdr"}
; idAttribute = id ; primary key in cdr table, default is "id"

; web session storage parameters
[session]
key = ${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 = ${AUTH_AD_DOMAIN:-"example"}

[auth.ad.connection]
url = ${AUTH_AD_CONNECTION_URL:-"ldap://server.ip.address"}
baseDN = ${AUTH_AD_CONNECTION_BASEDN:-"dc=example,dc=org"}
username = ${AUTH_AD_CONNECTION_USERNAME:-"cdruser@example.org"}
password = ${AUTH_AD_CONNECTION_PASSWORD:-"cdruser_ad_password"}

EOF

function _start() {

[ -d ${APP_HOME} ] && {

[ ${DB_INIT} == "TRUE" ] && {
local SQLFILE="${APP_HOME}/install/db.sql";

[ -f ${SQLFILE} ] && {
set -xv;
mysql ${DB_CONNECTION_DATABASE} -u${DB_CONNECTION_USER} -p${DB_CONNECTION_PASSWORD} -h${DB_CONNECTION_HOST} < $SQLFILE && \
mv ${SQLFILE} ${SQLFILE//.sql/}.$(date -I).sql;
set +xv;
}
}

cd ${APP_HOME} && {
cat config.ini

echo ":: open for the business !";
node ./server.js
}
}
}

function main() {

[ ! -z "$@" ] && {
${@}
return $?
}

[ -z "${DB_CONNECTION_HOST}" ] && return 1;

local i=0
while [ $i -lt 30 ]; do
i=$((i+1));
nc -zv ${DB_CONNECTION_HOST} 3306 && {
_start;
}
sleep 20;
echo ":: waiting db in ${DB_CONNECTION_HOST}/${DB_CONNECTION_DATABASE} retry ${i}...";
done
}

main $@;
6 changes: 0 additions & 6 deletions run

This file was deleted.