Илья
Всем привет. Есть такая проблема
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
Илья
Что я делаю не так?)
Sergey
Илья
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
Дима
У контейнера есть команда которая выполняется при старте
Kool
RUN выполнить команду внутри контейнера во воемя сборки
Дима
И ты перезаписываешь оригинальную на свою
Дима
А ты вряд ли стартуешь nginx)
Дима
Илья
Такс. А как правильно слепить CMD строку, чтобы и nginx поднялся и скрипт зщапустился?
Kool
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
Но мне нужно создать еще некоторые файлы
Дима
Илья
В общем. Добавил в скрипт где создаю файлы итд
service nginx start
И все
Илья
А по MySQL почитаю. Спасибо
Илья
А вообще, как лучше запускать sh скрипты внутри контейнера?
RUN /tmp/init_files.sh ?
Рустам
Ребят, всем привет. Заметил что многие в опенсорсе чтобы в контейнер какого нибудь редиса прокинуть конфиги собирают его сами. Я всегда использовал подход что я беру готовый образ а в него уже волюмом конфиги вкидываю. Нормальный ли это подход?
Mikhail
Думаю не очень, например если у тебя кластер то тебе придется обеспечить наличие этого файла на всех нодах. Проще запаковать конфиг в образ
Дима
Дима
Если это позволяет задача и так удобнее то почему нет
Рустам
Понял, всем спасибо)
Mikhail
а docker swarm не умеет генерировать docker-compose файл из текущей конфигурации кластера?
Konstantin
Нет
Mikhail
Konstantin
Mikhail
я за время эксплуатации делаю updatы и creatы сервисом, а еще у меня автодеплой, который без моего участия апдейти версии контейнеров, мой compose.yml устаревает
Mikhail
и не понятно как актуализировать
Anonymous
Konstantin
хардкод же, фи такое
Max
Кто знает почему в Docker compose под macOS иногда ctrl+c "убивает" процессы, иногда делает graceful shutdown, а иногда выбрасывает Aborting?
Antlar
Если один раз ктрл-с нажать, то будет грейсфул шатдаун
Antlar
Если джва, то он просто сигкил пошлёт
Antlar
А про еррор я хз) ни разу такого не было...)
Max
A
Kubernetes
Согласен, но не будет ли overkill для 10-15 контейнеров?
Max
Max
overhead?
A
Max
никогда не понимал того, когда говорят "зачем тебе куб? у тебя же 10 контейнеров"
Max
если эта технология облегчает тебе жизнь, то неважно сколько у тебя контейнеров и какие нагрузки
Max
общий редис и rabbitmq в кубе
Max
10-15 контейнеров это на один проект?
Max
микросервисная архитектура?