Ответ
Да, технически можно, но это противоречит принципам Docker и микросервисной архитектуры. Контейнер должен содержать один процесс/сервис.
Проблемы:
- Усложняется логирование (stdout/stderr смешиваются)
- Невозможно масштабировать отдельные компоненты
- Сложнее управлять жизненным циклом процессов
- Нарушается принцип единственной ответственности
Исключения:
- Разработка/тестирование (удобно иметь все в одном контейнере)
- Очень простые приложения
# Плохая практика (но работает)
FROM alpine
RUN apk add --no-cache nginx mysql redis
CMD service nginx start && mysqld_safe & redis-server & your_app
Лучше использовать docker-compose для оркестрации нескольких контейнеров.