pythondockeralpine-linuxash

Docker Alpine linux running 2 programs


I am trying to create docker image with alpine linux, which after run will create container with 2 running programs. This 2 (in my opinion - I don't know docker well) can't be separated because first program changes the seconds configuration file and then should restart that program too.

I am struggling how to run both programs. I have added own script which should run that programs but I am missing something - script is 2 lines on each line is command for running that program - and it only starts first program.

In ubuntu with python subprocess and systemctl command I restart running service but in alpine linux it's running as program and I don't know how to restart/reload it.


Solution

  • I would suggest to look at supervisord approach. You can find how to use it in docker documentation.

    Some example:

    1. Dockerfile is:

    FROM alpine:latest
    RUN apk update && apk add --no-cache supervisor openssh nginx
    COPY supervisord.conf /etc/supervisord.conf
    CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
    

    2. supervisord.conf is:

    [supervisord]
    nodaemon=true
    
    [program:sshd]
    command=/usr/sbin/sshd -D
    
    [program:nginx]
    command=nginx -c /etc/nginx/nginx.conf