Search code examples
servicedockercentosstartupdockerfile

Starting services at container startup


I'm trying to run 3 services at my container startup (snmpd, sshd and centengine)

As runlevel is unknown in the container, services won't start.

I built an image with this Dockerfile :

FROM centos:6.7
MAINTAINER nael <me@mail>

# Update CentOS
RUN yum -y update

# Install wget
RUN yum install -y wget

# Get Centreon Repo
RUN wget http://yum.centreon.com/standard/3.0/stable/ces-standard.repo -O /etc/yum.repos.d/ces-standard.repo

# Install Packages (SSH, sudo, Centreon Poller & Engine, SNMP)
RUN yum install -y --nogpgcheck openssh-clients openssh-server centreon-poller-centreon-engine sudo net-snmp net-snmp-utils

# Install supervisord
RUN rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
RUN yum --enablerepo=epel install -y supervisor
RUN mv -f /etc/supervisord.conf /etc/supervisord.conf.org
ADD supervisord.conf /etc/

# For sshd & centengine
EXPOSE 22 5669

# Change user password
RUN echo -e "password" | (passwd --stdin user)

# Disable PAM (causing issues while ssh login)
RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config
RUN sed -ri 's/#UsePAM no/UsePAM no/g' /etc/ssh/sshd_config

# Start supervisord
CMD ["/usr/bin/supervisord"]

Here is the supervisord.conf file

[supervisord]
nodaemon=true
pidfile=/var/run/supervisord.pid
logfile=/var/log/supervisor/supervisord.log

[program:centengine]
command=service centengine start

[program:snmpd]
command=service snmpd start

[program:sshd]
command=service sshd start

But with this Dockerfile and supervisord.conf, when I start my container theses services aren't running.

What could be the problem ?


Solution

  • Not anymore using supervisord.

    I just include a script with all the services ... start commands in the Dockerfile. When I create my container with docker run ... I just specify that I want to start it with my script.

    & that's working very well.

    Thanks @warmoverflow for trying to solve this.