docker cmd Запуск нескольких команд (процессов). SSH + Apache
Primary tabs
Можно использовать отдельный 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
Что ещё почитать:
- Run multiple services in a container https://docs.docker.com/config/container...
- Log in to post comments
- 3396 reads