I have a container and when I start it it exits after a few seconds with no output. How can I debug this to see where the issue is?d
Are you able to post your Dockerfile & the command you are using to run the container?
Also what does the output of $ docker logs <container>
show?
docker logs gives no output. Here is the Dockerfile:
FROM debian:jessie
MAINTAINER Larry Martell larry.martell@elucidbio.com
ENV HOME /opt/django/CAPgraph/
RUN (apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential git python python-dev python-setuptools nginx sqlite3 supervisor mysql-server libmysqlclient-dev vim cron unzip)
RUN (easy_install pip &&
pip install uwsgi)
ADD . $HOME
RUN pip install -r $HOME/requirements.txt
RUN chmod 777 /opt/django
RUN chmod 777 $HOME
ADD deploy/stardog/stardog-4.0.zip $HOME/stardog-4.0.zip
RUN cd $HOME && unzip stardog-4.0.zip && rm stardog-4.0.zip && mv stardog-4.0 stardog
ENV STARDOG_HOME $HOME/cap_data/knowledge
ADD deploy/stardog/stardog-license-key.bin $HOME/deploy/stardog/stardog-license-key.bin
ADD deploy/stardog/init $HOME/deploy/stardog/init
COPY deploy/util /usr/local/bin
RUN chmod a+x /usr/local/bin/reset_CAPgraph /usr/local/bin/start_CAPgraph /usr/local/bin/stop_CAPgraph
RUN (echo âdaemon off;â >> /etc/nginx/nginx.conf &&
rm /etc/nginx/sites-enabled/default &&
ln -s /opt/django/CAPgraph/django.conf /etc/nginx/sites-enabled/ &&
ln -s /opt/django/CAPgraph/supervisord.conf /etc/supervisor/conf.d/)
ADD mysql /var/lib/mysql
VOLUME [â/opt/django/CAPgraphâ]
VOLUME [â/var/lib/mysqlâ]
EXPOSE 80 8006
ADD crontab /etc/cron.d/backupMySQL
RUN chmod 0644 /etc/cron.d/backupMySQL
RUN touch /var/log/cron.log
CMD [â/opt/django/CAPgraph/run.shâ]
The run.sh has:
chown -R mysql:mysql /var/lib/mysql
mysql_install_db --user=mysql --ldata=/var/lib/mysql/
/usr/bin/mysqld_safe &
sleep 5
mysql -u root -e âCREATE DATABASE IF NOT EXISTS elucidâ
mysql -u root -e âSET PASSWORD FOR ârootâ@âlocalhostâ = PASSWORD(âxxxxxxâ)â
chmod 0777 /opt/django/CAPgraph/scripts/backupMySQL.py
set -e
sed -i âs#module=website.wsgi:application#module=wsgi:application#gâ /opt/django/CAPgraph/uwsgi.ini
sed -i â/session required pam_loginuid.so/c#session required pam_loginuid.soâ /etc/pam.d/cron
python /opt/django/CAPgraph/manage.py collectstatic --noinput
rm -f /opt/django/CAPgraph/app.sock
rm -f /opt/django/CAPgraph/cap_data/knowledge/system.lock
/opt/django/CAPgraph/stardog/bin/stardog-admin server start
exec /usr/bin/supervisord
I run it like this:
docker run -d -v /projects/elucid/CAPgraph:/opt/django/CAPgraph -v /projects/elucid/CAPgraph/mysql:/var/lib/mysql -v /etc/localtime:/etc/localtime -v /projects/cap_data:/opt/django/CAPgraph/cap_data -p 8004:80 -p 8006:8006 -p 45820:5820 elucidbio/capgraph:local
When I first ran it I got this error:
/opt/django/CAPgraph/run.sh: line 19: /opt/django/CAPgraph/stardog/bin/stardog-admin: No such file or directory
So I wanted to start the container with a shell and look around. So I commented out the run script in the Dockerfile and made a new image. And when I run that I get nothing and the container exits.
You donât need to comment anything out; anything you pass in the docker run
command overrides the CMD
in the Dockerfile. Itâs extremely common to
docker run --rm -it mycontainername bash
to try to do exactly this sort of debugging.
Thanks very much. This is what I needed to know. I was able to find the issues and get it working.