0

I am trying to convert a linux distro(RasPBX) into a docker container. So, far I was able to deploy the container, its runs without the desired outcome. Here is the docker file and dockerignore file:

FROM debian:buster-slim

Copy the whole system except what is specified in .dockerignore

COPY / /

RUN ./usr/sbin/asterisk

RUN chown -R asterisk:asterisk /var/run/asterisk &&
chown -R asterisk:asterisk /var/lib/asterisk &&
chown -R asterisk:asterisk /var/log/asterisk &&
chown -R asterisk:asterisk /var/spool/asterisk &&
chown -R asterisk:asterisk /usr/lib/asterisk

RUN chown -R mysql:mysql /var/lib/mysql/*

RUN mkdir /var/run/mysqld &&
touch /var/run/mysqld/mysqld.sock &&
touch /var/run/mysqld/mysqld.pid &&
chown mysql:mysql /var/run/mysqld/ &&
chmod -R 755 /var/run/mysqld/ &&
chown -R mysql:mysql /var/run/mysqld/mysqld.sock &&
chown -R mysql:mysql /var/run/mysqld/mysqld.pid &&
chmod -R 644 /var/run/mysqld/mysqld.sock &&
chown -R mysql:mysql /var/lib/mysql /var/run/mysqld

RUN sed -i 's/(^upload_max_filesize = )./\120M/' /etc/php/7.0/apache2/php.ini
&& cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf_orig
&& sed -i 's/^(User|Group).
/\1 asterisk/' /etc/apache2/apache2.conf
&& sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf

RUN a2enmod rewrite RUN service apache2 restart

RUN chmod +x /run/*

CMD /run/startup.sh

EXPOSE 80 3306 5060 5061 5160 5161 4569 10000-20000/udp code here

dockerginore:

# Remove folders mentioned here:
# https://wiki.archlinux.org/index.php/Rsync#As_a_backup_utility
/dev 
/proc
/sys
/tftpboot
/tmp
/run
/mnt
/media
/lost+found

Allow files and directories

!/run/startup.sh

Remove useless heavy files like /var/lib/scrapyd/reports.old

/*.old /.log /.bak

Remove docker

/var/lib/lxcfs /var/lib/docker /etc/docker /root/.docker /etc/init/docker.conf

Remove the current program

/.dockerignore /Dockerfile

And startup.sh:

#!/bin/bash -x

#https://docs.docker.com/engine/admin/multi-service_container/

/etc/init.d/mysql start status=$? if [ $status -ne 0 ]; then echo "Failed to start mysql: $status" exit $status fi

fwconsole start if [ $status -ne 0 ]; then echo "Failed to start fwconsole: $status" exit $status fi

#restore backup if exists if [ -f /backup/new.tgz ]; then echo "Restoring backup from /backup/new.tgz" php /var/www/html/admin/modules/backup/bin/restore.php --items=all --restore=/backup/new.tgz echo "Done" fi #restart freepbx to load everything fine after restoring backup fwconsole stop if [ $status -ne 0 ]; then echo "Failed to stop fwconsole: $status" exit $status fi fwconsole start if [ $status -ne 0 ]; then echo "Failed to start fwconsole: $status" exit $status fi

/etc/init.d/apache2 start status=$? if [ $status -ne 0 ]; then echo "Failed to start apache2: $status" exit $status fi

/run/backup.sh & status=$? if [ $status -ne 0 ]; then echo "Failed to start backup.sh: $status" exit $status fi

/run/delete-old-recordings.sh & status=$? if [ $status -ne 0 ]; then echo "Failed to start delete-old-recordings: $status" exit $status fi

while /bin/true; do ps aux |grep mysqld |grep -q -v grep MYSQL_STATUS=$? ps aux |grep asterisk |grep -q -v grep ASTERISK_STATUS=$? ps aux |grep '/run/backup.sh' |grep -q -v grep BACKUPSCRIPT_STATUS=$?

echo "Checking running processes..." if [ $MYSQL_STATUS -ne 0 -o $ASTERISK_STATUS -ne 0 -o $BACKUPSCRIPT_STATUS -ne 0 ]; then echo "One of the processes has already exited." exit -1 fi echo "OK" sleep 60 done

During the container deployment(docker run --name=pbx --net=macvlan_network --ip=192.168.00.55 -it --privileged --restart unless-stopped pbx) it shows:

+ /etc/init.d/mysql start
[ ok ] Starting MariaDB database server: mysqld . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
+ status=0
+ '[' 0 -ne 0 ']'
+ fwconsole chown
Taking too long? Customize the chown command, See http://wiki.freepbx.org/display/FOP/FreePBX+Chown+Conf
Setting Permissions...
Setting base permissions...Done
Setting specific permissions...
 8486 [============================]
Finished setting permissions
+ fwconsole start
Running FreePBX startup...
Taking too long? Customize the chown command, See http://wiki.freepbx.org/display/FOP/FreePBX+Chown+Conf
Setting Permissions...
Setting base permissions...Done
Setting specific permissions...
 8486 [============================]
Finished setting permissions
Starting Asterisk...
[============================] 3 secs
Asterisk Started
Running Asterisk post from Core module
Starting Core FastAGI Server...
[>---------------------------] 3 secs
Started Core FastAGI Server. PID is 886
+ '[' 0 -ne 0 ']'
+ '[' -f /backup/new.tgz ']'
+ fwconsole stop
Running FreePBX shutdown...

Running Asterisk pre from Core module Stopping Core FastAGI Server Stopped FastAGI Server Shutting down Asterisk Gracefully. Will forcefully kill after 30 seconds. Press C to Cancel Press N to shut down NOW [============================] < 1 sec

  • '[' 0 -ne 0 ']'
  • fwconsole start

Running FreePBX startup... Taking too long? Customize the chown command, See http://wiki.freepbx.org/display/FOP/FreePBX+Chown+Conf Setting Permissions... Setting base permissions...Done Setting specific permissions... 8501 [============================] Finished setting permissions Starting Asterisk... [============================] 2 secs Asterisk Started Running Asterisk post from Core module Starting Core FastAGI Server... [>---------------------------] 2 secs Started Core FastAGI Server. PID is 1276

  • '[' 0 -ne 0 ']'
  • /etc/init.d/apache2 start

[....] Starting Apache httpd web server: apache2AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 192.168.00.55. Set the 'ServerName' directive globally to suppress this message . ok

  • status=0
  • '[' 0 -ne 0 ']'
  • status=0
  • /run/backup.sh
  • '[' 0 -ne 0 ']'

/run/startup.sh: line 47: /run/backup.sh: No such file or directory

  • status=0
  • '[' 0 -ne 0 ']'
  • /bin/true
  • /run/delete-old-recordings.sh

/run/startup.sh: line 54: /run/delete-old-recordings.sh: No such file or directory

  • ps aux
  • grep mysqld
  • grep -q -v grep
  • MYSQL_STATUS=0
  • ps aux
  • grep asterisk
  • grep -q -v grep
  • ASTERISK_STATUS=0
  • ps aux
  • grep /run/backup.sh
  • grep -q -v grep
  • BACKUPSCRIPT_STATUS=1
  • echo 'Checking running processes...'

Checking running processes...

  • '[' 0 -ne 0 -o 0 -ne 0 -o 1 -ne 0 ']'
  • echo 'One of the processes has already exited.'

One of the processes has already exited.

  • exit -1

After bash into the container:

# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.1  0.0   1940   372 pts/0    Ss+  20:48   0:00 /bin/sh -c /run/startup.sh
root         7  0.0  0.0   3196  2128 pts/0    S+   20:48   0:00 /bin/bash -x /run/startup.sh
root        35  0.0  0.0   1940  1196 pts/0    S+   20:48   0:00 /bin/sh /usr/bin/mysqld_safe
root       127  0.0  0.0   3328  2608 pts/1    Ss   20:48   0:00 /bin/bash
mysql      163  1.3  1.8 724776 71276 pts/0    Sl+  20:48   0:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/arm-linux
root       164  0.0  0.0   4188   816 pts/0    S+   20:48   0:00 logger -t mysqld -p daemon error
root       369  6.5  0.7  81056 30724 pts/0    S+   20:48   0:01 php /usr/sbin/fwconsole start
root       471  0.0  0.0   1940    84 pts/0    S+   20:48   0:00 /bin/sh /usr/sbin/safe_asterisk -U asterisk -G asterisk
asterisk   473 11.0  1.3 205468 51880 pts/0    Sl+  20:48   0:01 /usr/sbin/asterisk -f -U asterisk -G asterisk -vvvg -c
asterisk   581 20.2  1.0 156188 40372 ?        Ssl  20:48   0:02 PM2 v2.10.7: God Daemon (/home/asterisk/.pm2)
asterisk   636  103  0.5 107888 21780 ?        Rsl  20:48   0:01 node /var/www/html/admin/modules/pm2/node/node_modules/pm2/lib/ProcessContainerFork.js
root       646  0.0  0.0   1940   364 pts/0    S+   20:48   0:00 sh -c runuser 'asterisk' -s '/bin/bash' -c 'cd /var/www/html/admin/modules/pm2/node && m
root       647  1.0  0.0   4832  2156 pts/0    S+   20:48   0:00 runuser asterisk -s /bin/bash -c cd /var/www/html/admin/modules/pm2/node && mkdir -p /ho
asterisk   648 91.0  0.5 105448 20100 ?        Rsl  20:48   0:00 node /var/www/html/admin/modules/pm2/node/node_modules/pm2/bin/pm2 jlist
root       656  0.0  0.0   5176  2120 pts/1    R+   20:48   0:00 ps aux

But, I still can't access the web console. Please, can anyone help me make this workeble?

0 Answers0