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
- 3028 reads