tacacsgui / tgui_install

Installation script for TacacsGUI
GNU General Public License v3.0
21 stars 9 forks source link

ubuntu 18.04 в docker: ошибка при проверке на запуск сервиса #5

Open schmel opened 5 years ago

schmel commented 5 years ago

Пробую поставить сервис в докере, при установке ругается на то, что сервис не запущен и выходит. В контейнере при проверке состояния сервиса нет строчки "Active: active (running)"

root@e397e1ba3318:/# /etc/init.d/tac_plus status tac_plus (19) is running. root@e397e1ba3318:/# service tac_plus status tac_plus (19) is running.

Для себя пока делаю так:

Из install.sh удаляем проверку на запуск демона. Меняем эту строчку: if [[ $(service tac_plus status | grep "Active: active (running)" | wc -l) -eq 0 ]]; then на эту: if [[ $(service tac_plus status | grep "is running" | wc -l) -eq 0 ]]; then

FROM ubuntu:18.04

# Логин и пароль в gui по умолчанию tacgui/tacgui

ENV DEBIAN_FRONTEND noninteractive
ENV MYSQL_PASSWORD SJdsk339JdwQ
ENV INSTALL_DIR tgui_install

RUN apt update \
 && apt install -y tzdata locales curl nano procps iputils-ping sudo supervisor git mysql-server software-properties-common systemd \
 && echo "Europe/Moscow" > /etc/timezone  \
 && dpkg-reconfigure -f noninteractive tzdata \
 && sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen \
 && locale-gen \
 && rm -rf /var/cache/apt/* \
 && rm -rf /var/lib/apt/lists/* \
 && rm -rf /tmp/*

ENV LANG en_US.UTF-8

# Supervisord
COPY config/supervisor.conf /etc/supervisor/conf.d/supervisor.conf

COPY gui/ /tmp

RUN echo $MYSQL_PASSWORD >> /tmp/${INSTALL_DIR}/tmp/.tgui_mysql \
 && service mysql start && service mysql status \
 && sleep 60 \
 && mysqladmin -u root password $MYSQL_PASSWORD \
 && /tmp/${INSTALL_DIR}/tacacsgui.sh silent \
 && rm -rf /var/cache/apt/* \
 && rm -rf /var/lib/apt/lists/* \
 && rm -rf /tmp/*

# Переводим логи в stdout
RUN find /etc/apache2/sites-enabled/* -exec sed -i 's/#*[Cc]ustom[Ll]og/#CustomLog/g' {} \; \
 && find /etc/apache2/sites-enabled/* -exec sed -i 's/#*[Ee]rror[Ll]og/#ErrorLog/g' {} \;  \
 && sed -i -e 's/LogLevel\ warn/LogLevel\ crit/g' /etc/apache2/apache2.conf \
 && rm -f /var/log/apache2/{error.log,access.log} \
 && ln -sf /proc/self/fd/1 /var/log/apache2/{error.log,access.log}

# volumes
VOLUME ["/var/lib/mysql"]

# Tacacs
EXPOSE 49 8008

CMD ["/usr/bin/supervisord"]

supervisor.conf

[supervisord]
nodaemon=true

[program:apache]
command=/usr/sbin/apache2ctl -DFOREGROUND
process_name=%(program_name)s_%(process_num)02d
numprocs=1
autostart=true
autorestart=true
startsecs=0
redirect_stderr=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0

[program:mysql]
autostart=true
autorestart=true
startretries=3
process_name=%(program_name)s
user=mysql
redirect_stderr=true
command=/usr/bin/pidproxy /tmp/mysql.pid /usr/bin/mysqld --datadir=/var/lib/mysql --pid-file=/tmp/mysql.pid
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
environment=PATH=/usr/local/sbin:/usr/bin:/bin:/usr/local/bin

[program:tacacs]
command             = /etc/init.d/tac_plus start
autostart           = true
autorestart         = false
startretries        = 0
startsecs           = 0
redirect_stderr=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
gurkin33 commented 5 years ago

Добрый день!

Интересно, Спасибо. А что на счет обновлений? Пересборка контейнера или можно обновить сам контейнер?

С Уважением, Алексей

schmel commented 5 years ago

пока думаю об этом, сейчас CI под gitlab дописываю. Есть некоторые проблемы с работой mysql под overlayfs (если docker в btrfs - то таких проблем нет.), пока решил костылем через find и touch. Я хотел растащить сначала по сервисам nginx + php_tacacs + mysql в разных контейнерах, но слишком много времени уходит, чтобы распарсить install.sh для ручной установки. Пока сделал в одном контейнере. Сделаю потом форк с изменениями, если контейнер будет готов и работать без нареканий.