docker cmd Запуск нескольких команд (процессов). SSH + Apache

Можно использовать отдельный bash-скрипт, для выполнения ваших команд одна за одной.

Напр. файл run.sh:

#!/bin/bash

echo "---@Start SSH!"
/usr/sbin/sshd 
status=$?
if [ $status -ne 0 ]; then
  echo "Failed to start sshd: $status"
  exit $status
fi

echo "---@Start Apache!"
/usr/sbin/apache2ctl -D FOREGROUND
status=$?
if [ $status -ne 0 ]; then
  echo "Failed to start apache2ctl: $status"
  exit $status
fi

ВНИМАНИЕ: убедитесь, что все команды (хотя бы все кроме последней), если они являются процессами уходят в фоновый режим после запуска (обращайте внимание на флаги с которыми их запускаете, напр. выполнение /usr/sbin/sshd -D вместо приведенной выше /usr/sbin/sshd просто не даст запустится следующей команде старта апача)

И его использование в докерфайле:

FROM ubuntu:18.04

ENV TZ=Europe/Moscow

ARG NOCACHE=0
RUN apt-get update
ARG NOCACHE=1

RUN apt-get -y install \
    apache2

ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid

WORKDIR "/var/www/html/site"

#---netstat-------
RUN apt install net-tools 
#---netstat END-------

#---SSH-------
RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:12345' | chpasswd
RUN sed -i 's/#*PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config

# SSH login fix. Otherwise user is kicked off after login
RUN sed -i 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' /etc/pam.d/sshd

ENV NOTVISIBLE="in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile

#--SSH END----


COPY run.sh run.sh
RUN  chmod +x run.sh

CMD  ./run.sh

Что ещё почитать: