Илья
Всем привет. Есть такая проблема Docker создает контейнер. Запускает баш скрипт итд Но потом выходит Собираю через docker-compose up -d --build docker-compose.yml version: '3.3' services: nginx: container_name: nginx build: context: ./docker dockerfile: nginx.docker logging: driver: "json-file" options: max-size: "1k" max-file: "3" volumes: - ./www:/var/www - ./log:/var/log - ./log/nginx:/var/log/nginx ports: - "80:80" networks: - net networks: net: Сам файл nginx.docker FROM nginx:1.10 ADD ./nginx/default.conf /etc/nginx/conf.d/default.conf ADD ./scripts/init_logs_files.sh /tmp/init_logs_files.sh RUN chmod +x /tmp/init_logs_files.sh CMD ["/tmp/init_logs_files.sh"] WORKDIR /var/www
Илья
Что я делаю не так?)
Илья
docker ps -a
Илья
Exited (0) 8 minutes ago
Sergey
че в логах
Илья
docker logs nginx?
Sergey
мля ты логи nginx пробросил на том
Sergey
для чего?
Илья
Пусто в логах
Sergey
значит nginx не стартует
Илья
Если убираю эти три строки ADD ./scripts/init_logs_files.sh /tmp/init_logs_files.sh RUN chmod +x /tmp/init_logs_files.sh CMD ["/tmp/init_logs_files.sh"] То все норм
Илья
Но мне нужно выполнить баш скрипт внутри, чтобы он выполнил команды, например, дамп залил или файлы необходимые создал
Илья
Я только начал с докером знакомиться, можно по подробнее?
Дима
У контейнера есть команда которая выполняется при старте
Kool
RUN выполнить команду внутри контейнера во воемя сборки
Дима
И ты перезаписываешь оригинальную на свою
Дима
А ты вряд ли стартуешь nginx)
Илья
Такс. А как правильно слепить CMD строку, чтобы и nginx поднялся и скрипт зщапустился?
Kool
один контейнер = одна задача
Дима
Смотря что делает скрипт)
Kool
у тебя compose есть
Дима
Если он меняет что-то в контейнере но зависим от volumes смотри как это сделано в poatgres контейнере например. Если просто сделать что-то внутри контейнера с файлами внутри контейнера - добавляешь скрипт и запускакшь его
Илья
Дык я добавил скрипт и запускаю. Он выполняет и контейнер выходит)
Дима
Ты егозапускаешь в cmd. Это перезаписывает оригинальную команду
Илья
А где нужно запускать?
Дима
Ты так и не рассказал, что тебе нужно.
Дима
Если это история про дамп - просто используй другой контейнер
Дима
С базой
Илья
Ок. Основная задача поднять полностью проект на докер Чтобы апалось все автоматом Пока что эксперементирую и изучаю Например для nginx нужно создать некоторые файлы в конейнере А для MySQL залить дамп
Дима
Ну вот у тебя 2 контейнера. Один это nginx, а второй это mysql
Илья
Да
artb1sh
В чем пробьлема?
Дима
В один копируешь свой специальный конфиг, а у второго пробрасываешь папку, внее кидаешь дамп и он сам его применяет
Дима
https://hub.docker.com/_/mysql/
Дима
Все что нужно здесь
Илья
По MySQL. Любую папку? Или нужно дамп положить в определенную папку контейнера? По NGINX. Не совсем понял. Что и где нужно поправить чтобы и скрипт стартовал и nginx
Дима
По нжинкс тебе просто надо сделать copy твой конфиг [путь(дефолтный конфиг сервера)] и все
Дима
По mysql все в описании образа
Илья
В nginx я уже копирую FROM nginx:1.10 ADD ./nginx/default.conf /etc/nginx/conf.d/default.conf Но мне нужно создать еще некоторые файлы
Ilia
Ты егозапускаешь в cmd. Это перезаписывает оригинальную команду
А разве нельзя запустить в cmd и в конце добавить предыдущую команду, что бы после скрипта поднялась она. Костыль но вроде бы работало.
Илья
В общем. Добавил в скрипт где создаю файлы итд service nginx start И все
Илья
А по MySQL почитаю. Спасибо
Илья
А вообще, как лучше запускать sh скрипты внутри контейнера? RUN /tmp/init_files.sh ?
Рустам
Ребят, всем привет. Заметил что многие в опенсорсе чтобы в контейнер какого нибудь редиса прокинуть конфиги собирают его сами. Я всегда использовал подход что я беру готовый образ а в него уже волюмом конфиги вкидываю. Нормальный ли это подход?
Mikhail
Думаю не очень, например если у тебя кластер то тебе придется обеспечить наличие этого файла на всех нодах. Проще запаковать конфиг в образ
Дима
Если это позволяет задача и так удобнее то почему нет
Рустам
Понял, всем спасибо)
Mikhail
а docker swarm не умеет генерировать docker-compose файл из текущей конфигурации кластера?
Konstantin
Нет
Mikhail
я за время эксплуатации делаю updatы и creatы сервисом, а еще у меня автодеплой, который без моего участия апдейти версии контейнеров, мой compose.yml устаревает
Mikhail
и не понятно как актуализировать
Konstantin
хардкод же, фи такое
Mikhail
хардкод же, фи такое
Так если он деплоится по пушу в репу с конфигом то я думаю ок
Max
Кто знает почему в Docker compose под macOS иногда ctrl+c "убивает" процессы, иногда делает graceful shutdown, а иногда выбрасывает Aborting?
Antlar
Если один раз ктрл-с нажать, то будет грейсфул шатдаун
Antlar
Если джва, то он просто сигкил пошлёт
Antlar
А про еррор я хз) ни разу такого не было...)
A
Kubernetes
Согласен, но не будет ли overkill для 10-15 контейнеров?
Max
overhead?
A
Зависит от объема и сложности приложения.
10-15 контейнеров, без дубликатов.
Max
никогда не понимал того, когда говорят "зачем тебе куб? у тебя же 10 контейнеров"
Max
если эта технология облегчает тебе жизнь, то неважно сколько у тебя контейнеров и какие нагрузки
Max
10-15 контейнеров, без дубликатов.
у меня 6 проектов-клонов, в каждом 3-4 деплоймента + 4 cronjob'a, разделено неймспейсами
Max
общий редис и rabbitmq в кубе
A
а какие профиты от docker-stack?
Вот и я хотел узнать что-то большое чем написано в доке.
Max
10-15 контейнеров это на один проект?
Max
микросервисная архитектура?