dcptn
основному ждать отмашки от бэкапера, через http или socks
Sander
вроде сделал
Sander
команду надо было вставить в самый низ
Sander
depends_on: - mariadb command: "mysqldump --user=homestead --password=secret -h mariadb_container homestead"
Sander
под depends_on
Sander
работаем дальше
Anton
#whois Какой у вас проект или где работаете? Рунетсофт В чём вы специалист? Есть опыт администрирования Linux, Windows. Неоднократно настраивал nginx, apache, mysql, postgresql, iis, mssql. Докер использую в dev окружении. Чем можете быть интересны или полезны сообществу? Подскажу, если сталкивался с описанными проблемами. Чем интересно сообщество вам? Постигаю докер, иногда есть вопросы и их некому задать, а также чтобы учиться на чужих ошибках Откуда вы? СПб Как узнали про группу? DevOps WebAcademy
Denis
С праздником :) 🎉🤠🎸
Sander
docker-compose: 1) почему если просто включаю контейнер, вручную захожу через терминал и делаю mysqldump то все работает. 2) а когда прямо в docker-compose.yml пишу mysqldump через command:, то ничего не работает. в логах вижу это: $ docker logs backup_container mysqldump: Couldn't find table: "|" -- MySQL dump 10.16 Distrib 10.1.21-MariaDB, for debian-linux-gnu (x86_64) -- -- Host: mariadb_container Database: mariadb_container -- ------------------------------------------------------ -- Server version 10.1.21-MariaDB-1~jessie /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHA .................. backup_container: image: mariadb:latest container_name: backup_container volumes: - ./containers/mariadb/export/:/tmp/:rw ... networks: - dev_network depends_on: - mariadb command: "mysqldump --single-transaction --quick --user=homestead --password=secret -h mariadb_container homestead | gzip -c > /tmp/test.sql.gz" но если запустить просто, без gzip, то он выведет результат mysqldump, значит он работает, но почему в файл не сохраняет. command: "mysqldump --single-transaction --quick --user=homestead --password=secret -h mariadb_container homestead"
Sander
🤔
Sander
😞
Roman
Синий кит
Sander
?
Sander
может кто-нибудь знает в чем проблема? долго уже решить не могу.
Sander
command: "/bin/bash /var/test.sh" почему-то через файл работает ... но мне надо чтоб команда была написано прямо в docker-compose.yml, а не через bash file.
Sander
в чем может быть проблема?
Sander
😞
Mike
а что содержится в самой команде? и какую выдает ошибку docker compose?
Sander
ошибку я уже прислал выше
Sander
в самом начале вопроса лог
dcptn
добавь его в скрипт, а ентрипоинт как этот скрипт
Sander
таким образом его чтоль делать? # entrypoint: # - "mysqldump" # - "--user=homestead" # - "--password=secret" # - "-h" # - "mariadb_container" # - "homestead" # - "|" # - "gzip" # - "-c" # - ">" # - "/var/backups/export/database.sql"
dcptn
вижу, тебе надо прямо в композере
Sander
просто жутко выглядит
Sander
сам комманд command, странный. Может быть он не позволяет, делать тяжелую логику.
Mike
возможно разгадка кроется тут?
Mike
http://stackoverflow.com/questions/35452760/difference-between-cmd-and-entrypoint-in-dockefile/35453524
Sander
проблем это сделать через dockerfile нет
Sander
проблема сделать это через docker-compose
Alex
Используй bash/sh как entry point
Mike
в ответе описано взаимодействие entrypoint и cmd, возможно у вашего контейнера, который вы используете описан entrypoint, который не переопределяется в рамках docker-compose
Alex
А все остальное это будет аргумент
Mike
собственно, что и написано в этом ответе на SO
Alex
Хотя все это не очень выглядит
Sander
ну не сказал бы
Alex
Я бы добавил entrypoint.sh в image
Sander
почему если запустить, он отдаст результат бекапа, который я сделал command: "mysqldump --user=homestead --password=secret -h mariadb_container homestead" но дальше, сохранить в файл или что-то еще не могу.
Alex
Потому что это не оболочка а просто программа )
Alex
Вы не в bash окружении
Sander
мне надо просто запустить комманду в контейнере
Sander
и все
Sander
command, вроде это делает
Alex
Вы хотите использовать перенаправления
Alex
>
Alex
Это не заработает
Alex
С командой
Mike
сработает только в случае, если примонтировать volume и писать туда
Mike
кажется так
Sander
это как
Mike
ваша команда выполняется в контейнере. это значит, что и все, что пишется пишется в контейнере. если вы смонтируете volume, то сможете по сути зашарить между хостом и контейнером данные
Mike
в целом @hayorov предлагает вам более чем красивый вариант с entrypoint.
Sander
entrypoint и баш файлом я уже делал
Alex
Ну и?
Sander
не нравиться мне так
Alex
))
Sander
не очень удобно
Alex
Ну тогда entrypoint: bash
Alex
А command
Alex
Вся ваша лапша с пайпами
Sander
entrypoint bash пробовал тоже
Alex
И?
Sander
ну не работает
Mike
/bin/bash ?
Sander
да
Alex
Вывод какой?
Alex
Зайдите в контейнер и выполнение bash -c "ваша лапша"
Sander
косяк разработчиков докре вот какой вывод
Alex
))
Alex
И в чем же проблема ?
Alex
Поделитесь ссылкой на issue
Sander
да я имею ввиду что, косяк разработчиков в том что сделали такой геморой
Sander
я так обычно говорю, когда что-то не получаетс
Sander
я
Alex
Ещё немножко вам для размышления если у вас entrypoint некоторая программа и вы используете перенаправления и пайпы между разных программ mysqldumo gzip , кто управляет перенаправление в вашем случае ?
Alex
Mysqldump?
Alex
Вам нужна оболочка чтобы это делать она менеджит каскадный запуск и тп
Sander
ничего не понял
Sander
сколько людей столько и мнений то как лучше сделать
Alex
Фуф, ладно не берите в голову
Sander
каждый говорит по разному