@docker_ru
Docker — русскоговорящее сообщество

Обсуждаем вопросы, посвященные Docker🐳, Docker Swarm и всей экосистеме. Обмениваем идеями, новостями и решаем пробемы. Вам могут быть полезны: @coreos_ru, @kubernetes_ru, @devops_ru, @rkt_ru Рекомендуем сразу отключить уведомления для удобства

2608 members

Архив канала @docker_ru 23 февраля 2017 г.

11:41:23 ДП
User 24306243
как в docker-compose.yml, создат переменную, в которой будет храниться текущее время.
контейнер не хочет работать из-за "$(date +'%I:%M:%S')"

command: "mysqldump --user=homestead --password=secret homestead > /var/backups/export/database.sql &&
    tar czfP /var/backups/export/site_$(date +'%I:%M:%S').tar.gz -C /var/backups/export/ database.sql"
11:47:20 ДП
12:04:44 ПП
User 2339730
Вроде как композ распознает переменные окружения?
12:08:03 ПП
User 24306243
может как-то иначе надо написать не знаю, но вот то что я прислал, так оно работать не хочет
12:14:05 ПП
User 24306243
как сделать backup базы, если контейнер запускается раньше чем мне нужно, поэтому он просто не успевает сделать export.

  mariadb:
    image: mariadb:latest
    container_name: mariadb_container
    ....
    ports:
      - "3306:3306"
    networks:
      - dev_network

  backup_container:
    image: mariadb:latest
    container_name: backup_container
    volumes_from:
      - mariadb
    command: "mysqldump --user=homestead --password=secret -h mariadb_container homestead > /var/backups/export/database.sql"
    networks:
      - dev_network
12:24:00 ПП
User 86497879
@sander92 depends_on
12:24:11 ПП
User 24306243
пробовал
12:28:51 ПП
User 24306243
может быть он контейнер включает, но сервисы в нутри контейнера, не успевают включиться
12:28:59 ПП
User 24306243
поэтому оно скорей и не работает
12:29:31 ПП
User 24306243
но как сделать чтоб в depends_on он дождался, пока сервисы поднимуться?
12:31:37 ПП
User 86497879
основному ждать отмашки от бэкапера, через http или socks
12:33:05 ПП
User 24306243
вроде сделал
12:33:17 ПП
User 24306243
команду надо было вставить в самый низ
12:33:19 ПП
User 24306243
depends_on:
      - mariadb
    command: "mysqldump --user=homestead --password=secret -h mariadb_container homestead"
12:33:26 ПП
User 24306243
под depends_on
12:33:33 ПП
User 24306243
работаем дальше
12:38:01 ПП
User 336321861
#whois
Какой у вас проект или где работаете?
Рунетсофт
В чём вы специалист?
Есть опыт администрирования Linux, Windows. Неоднократно настраивал nginx, apache, mysql, postgresql, iis, mssql. Докер использую в dev окружении.
Чем можете быть интересны или полезны сообществу?
Подскажу, если сталкивался с описанными проблемами.
Чем интересно сообщество вам?
Постигаю докер, иногда есть вопросы и их некому задать, а также чтобы учиться на чужих ошибках
Откуда вы?
СПб
Как узнали про группу?
DevOps WebAcademy
01:53:35 ПП
User 4627228
С праздником :) 🎉🤠🎸
02:05:08 ПП
User 24306243
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"
02:06:25 ПП
02:07:27 ПП
02:08:50 ПП
User 19103919
Синий кит
02:10:01 ПП
02:12:08 ПП
User 24306243
может кто-нибудь знает в чем проблема? долго уже решить не могу.
02:18:42 ПП
User 24306243
command: "/bin/bash /var/test.sh"
почему-то через файл работает ...

но мне надо чтоб команда была написано прямо в docker-compose.yml, а не через bash file.
02:18:52 ПП
User 24306243
в чем может быть проблема?
02:23:00 ПП
02:23:22 ПП
User 5713261
а что содержится в самой команде? и какую выдает ошибку docker compose?
02:23:35 ПП
User 24306243
ошибку я уже прислал выше
02:23:40 ПП
User 24306243
в самом начале вопроса лог
02:23:47 ПП
User 86497879
добавь его в скрипт, а ентрипоинт как этот скрипт
02:24:10 ПП
User 24306243
таким образом его чтоль делать?
#    entrypoint:
#      - "mysqldump"
#      - "--user=homestead"
#      - "--password=secret"
#      - "-h"
#      - "mariadb_container"
#      - "homestead"
#      - "|"
#      - "gzip"
#      - "-c"
#      - ">"
#      - "/var/backups/export/database.sql"
02:24:11 ПП
User 86497879
вижу, тебе надо прямо в композере
02:24:14 ПП
User 24306243
просто жутко выглядит
02:26:21 ПП
User 24306243
сам комманд command, странный. Может быть он не позволяет, делать тяжелую логику.
02:27:24 ПП
User 5713261
возможно разгадка кроется тут?
02:27:24 ПП
User 5713261
http://stackoverflow.com/questions/35452760/difference-between-cmd-and-entrypoint-in-dockefile/35453524
stackoverflow.com/questions/35452760/difference-between-cmd-and-entrypoint-in-dockefile/35453524
I am new to docker, has a simple question to the dockfile. We can write entrypoint and CMD in dock file. Seems that entrypoint is executed during creating container. And CMD is executed during star...
02:28:15 ПП
User 24306243
проблем это сделать через dockerfile нет
02:28:21 ПП
User 24306243
проблема сделать это через docker-compose
02:29:05 ПП
User 78637479
Используй bash/sh как entry point
02:29:12 ПП
User 5713261
в ответе описано взаимодействие entrypoint и cmd, возможно у вашего контейнера, который вы используете описан entrypoint, который не переопределяется в рамках docker-compose
02:29:15 ПП
User 78637479
А все остальное это будет аргумент
02:29:30 ПП
User 5713261
собственно, что и написано в этом ответе на SO
02:29:41 ПП
User 78637479
Хотя все это не очень выглядит
02:29:45 ПП
User 24306243
ну не сказал бы
02:30:08 ПП
User 78637479
Я бы добавил entrypoint.sh в image
02:30:28 ПП
User 24306243
почему если запустить, он отдаст результат бекапа, который я сделал command: "mysqldump --user=homestead --password=secret -h mariadb_container homestead"
но дальше, сохранить в файл или что-то еще не могу.
02:31:05 ПП
User 78637479
Потому что это не оболочка а просто программа )
02:31:17 ПП
User 78637479
Вы не в bash окружении
02:31:42 ПП
User 24306243
мне надо просто запустить комманду в контейнере
02:31:47 ПП
User 24306243
и все
02:31:56 ПП
User 24306243
command, вроде это делает
02:35:13 ПП
User 78637479
Вы хотите использовать перенаправления
02:35:16 ПП
02:35:28 ПП
User 78637479
Это не заработает
02:35:32 ПП
User 78637479
С командой
02:36:02 ПП
User 5713261
сработает только в случае, если примонтировать volume и писать туда
02:36:13 ПП
User 5713261
кажется так
02:36:17 ПП
User 24306243
это как
02:37:59 ПП
User 5713261
ваша команда выполняется в контейнере. это значит, что и все, что пишется пишется в контейнере. если вы смонтируете volume, то сможете по сути зашарить между хостом и контейнером данные
02:38:23 ПП
User 5713261
в целом @hayorov предлагает вам более чем красивый вариант с entrypoint.
02:38:49 ПП
User 24306243
entrypoint и баш файлом я уже делал
02:39:02 ПП
02:39:16 ПП
User 24306243
не нравиться мне так
02:39:23 ПП
02:39:30 ПП
User 24306243
не очень удобно
02:40:01 ПП
User 78637479
Ну тогда entrypoint: bash
02:40:07 ПП
User 78637479
А command
02:40:18 ПП
User 78637479
Вся ваша лапша с пайпами
02:40:35 ПП
User 24306243
entrypoint bash пробовал тоже
02:40:51 ПП
02:40:55 ПП
User 24306243
ну не работает
02:41:05 ПП
User 5713261
/bin/bash ?
02:41:08 ПП
02:41:20 ПП
User 78637479
Вывод какой?
02:41:49 ПП
User 78637479
Зайдите в контейнер и выполнение bash -c "ваша лапша"
02:41:55 ПП
User 24306243
косяк разработчиков докре вот какой вывод
02:42:04 ПП
02:43:16 ПП
User 78637479
И в чем же проблема ?
02:43:37 ПП
User 78637479
Поделитесь ссылкой на issue
02:45:25 ПП
User 24306243
да я имею ввиду что, косяк разработчиков в том что сделали такой геморой
02:45:38 ПП
User 24306243
я так обычно говорю, когда что-то не получаетс
02:45:39 ПП
02:51:17 ПП
User 78637479
Ещё немножко вам для размышления если у вас entrypoint некоторая программа и вы используете перенаправления и пайпы между разных программ mysqldumo gzip , кто управляет перенаправление в вашем случае ?
02:51:31 ПП
User 78637479
Mysqldump?
02:52:23 ПП
User 78637479
Вам нужна оболочка чтобы это делать она менеджит каскадный запуск и тп
02:52:51 ПП
User 24306243
ничего не понял
02:53:03 ПП
User 24306243
сколько людей столько и мнений то как лучше сделать
02:53:07 ПП
User 78637479
Фуф, ладно не берите в голову
02:53:12 ПП
User 24306243
каждый говорит по разному
02:53:20 ПП
User 24306243
от этого голова кипит просто
02:53:26 ПП
04:53:51 ПП
User 24306243
Не получается запустить dockerize и mysql одновременно,

1) dockerize -template /tmp/my.cnf.tmpl:/etc/mysql/my.cnf
2) exec mysqld

пробывал все варианты:
1) ENTRYPOINT ["dockerize", "-template", "/tmp/my.cnf.tmpl:/etc/mysql/my.cnf"]
CMD ["mysqld"]

2) ENTRYPOINT dockerize -template /tmp/my.cnf.tmpl:/etc/mysql/my.cnf
CMD ["mysqld"]

3) ENTRYPOINT ["/bin/bash", "/var/test.sh"]
CMD ["mysqld"]

4) CMD ["/bin/bash", "/var/test.sh"]
test.sh сам файл:

dockerize -template /tmp/my.cnf.tmpl:/etc/mysql/my.cnf

exec mysqld


Когда запускаю выводит, эти ошибки.
mariadb_container | 2017-02-23 16:51:20 140074639960000 [Note] mysqld (mysqld 10.1.21-MariaDB-1~jessie) starting as process 10 ...
mariadb_container | mysqld: Please consult the Knowledge Base to find out how to run mysqld as root!
mariadb_container | 2017-02-23 16:51:20 140074639960000 [ERROR] Aborting
mariadb_container | 
mariadb_container | 2017/02/23 16:51:20 Command exited with error: exit status 1
mariadb_container exited with code 1
------
Конечно если делать без dockerize, то все работает отлично, что очень странно, так как я уже использовал dockerize для nginx, и все работает хорошо.
05:01:03 ПП
User 24306243
проблема ток когда я ENTRYPOINT и CMD запускаю одновременно, но и просто в RUN я не могу положить запуск dockerize, он должен запускаться каждый раз, чтоб конфиги подсасывать.
05:06:43 ПП
User 24306243
ENTRYPOINT ["dockerize"]
CMD ["-template", "/tmp/my.cnf.tmpl:/etc/mysql/my.cnf", \
    "docker-entrypoint.sh", "mysqld"]ё
05:06:46 ПП
User 24306243
вроде так заработало
05:06:50 ПП
User 24306243
сейчас будем тестить
07:03:15 ПП
User 282320912
Та что сделал то чтобы пошло?
08:17:21 ПП
User 342142410
#whois
Работаю в ONmoon LLC
Fullstack-разработчик
Ничем
Возможностью задать вопросы
Москва
Из вк группы
08:17:47 ПП
User 342142410
Добрый вечер, ребята. Кто-нибудь настраивал кастомные драйвера для логгирования докер-контейнеров?
09:09:15 ПП
User 84802924
User 342142410
Добрый вечер, ребята. Кто-нибудь настраивал кастомные драйвера для логгирования докер-контейнеров?
зойчем кастмные?