Vadim
Ребят, подскажите пожалуйста, какие best-practices для деплоя приложения? Ну то есть можно собирать локально образ, пушить в хаб и на удаленном сервере делать pull Или непосредственно код загружать отдельно и потом уже использовать docker? Заранее благодарю!
🦠
если ты держишь докер для прода, то очевидно сборка и деплой образа
🦠
если докер для дев/тест стейджа - смысла пушить на прод нет
Max
пуш в хаб напрямую с машины разработчика - не очень хорошая практика
Mannaro
Народ, а есть какая настройка в сварме, чтобы чистил старые образы?
Ruslan
полагаю, это не дело ни сварма, ни докера в swarm mode-е. Старый (в смысле, не используемый сейчас) - это не всегда точно_ненужный. Так что это надо как-то отдельно, явно делать.
Simak
Парни. Глупый вопрос. Ошибка) выскакивает :yaml.scanner.ScannerError: while scanning for the next token found character '\t' that cannot start any token in "./glpi.yml", line 2, column 1
Simak
при минимуме текста
Simak
GLPI: image: test/glpi ports: - 8080:80
Ruslan
ну дык написано же, что используется символ табуляции и еще визуально image и ports не на одном уровне
Simak
в файле на одном)
Simak
в nano во всяком случае)
🦠
image))
🦠
build?
🦠
image он с двоеточиями)
🦠
build - путь
Ruslan
проверь там табы или пробелы?
Simak
табы ставил, как меня тут учили)
Simak
1 и 2)
🦠
лан, развлекайтесь)
Simak
Так в чем косяк?)
Ruslan
GLPI: image: test/glpi ports: - 8080:80
1) выложи исходник на gist 2) скопируй с него обратно в проект, вдруг заработает )) 3) посмотрим
Simak
Короче если один таб заменить на два проблема
Simak
а два таба на 4 пробела )
Simak
завелось)
Mannaro
полагаю, это не дело ни сварма, ни докера в swarm mode-е. Старый (в смысле, не используемый сейчас) - это не всегда точно_ненужный. Так что это надо как-то отдельно, явно делать.
Однако, сварм управляет количеством контейнеров (остановленных). И при достижении определенного кол-ва удаляет старые.
Ruslan
табы ставил, как меня тут учили)
Кажется, я что-то пропустил. с каких пор в ямле надо (можно) табы использовать?
Ruslan
спросили про образы, а вы про контейнеры ответили
Mannaro
Я же и спрашиваал)
Simak
Кажется, я что-то пропустил. с каких пор в ямле надо (можно) табы использовать?
Как то я заводил тут речь, и мне сказали табами можно делать отступы ) Ну видать я не так понял человека, и это больше моя ошибка
Ruslan
Я же и спрашиваал)
Всё еще нет противоречий )))
Mannaro
Ок, ну наверняка же есть какие-то кейсы? У меня место кончилось на серве, не хотелось бы допускать такого впредь) Кто как решает эту проблему?
Vadim
Коллеги, подскажите пожалуйста, что делаю не так Делаю docker system prun -fa - чтобы наверняка) на локальной машине собираю образ: docker build -t vsokoltsov/uprogress:production -f "$(pwd)/config/docker/Dockerfile" --force-rm --no-cache . Захожу в контейнер через docker run -it vsokoltsov/uprogress:production bash - код актуален Делаю push в hub.docker.com - docker push vsokoltsov/uprogress:production Далее, захожу на удаленный сервер, повторяю там docker system prune -fa (и удаляю все образы через docker rmi -f/docker-compose rm -f) Далее, делаю pull образа - docker pull vsokoltsov/uprogress:production Опять захожу в контейнер - docker run -it vsokoltsov/uprogress:production bash - код актуален Потом делаю build через docker-compose - docker-compose build (https://github.com/vforvad/Uprogress-server/blob/add-email-sending/docker-compose.production.yml, если кому интересно) Захожу в сервис через docker-compose run app bash - код не актуален (файлы не изменены). Почему? Заранее благодарю!
Oleg
еще вариант - возможно, моя IDE настроена заменять табы на пробелы
Ivan
всем привет. с докером знаком три дня. есть задача не могу решить. у меня есть контейнер для nginx. в него я протаскиваю конфиги для виртуальных доменов. но конфиги почему то не пашут и домен доступен только через 0.0.0.0:80
Alex
Значит из контейнера торчит только порт 80 или у тебя энджинкс падает на всем кроме порта 80.
Alex
Хотя если б падал то давал виду, поэтому первое.
Ivan
не подскажешь как можно исправить? я использую docker compose
Alex
Там где експоузишь порт 80 в композе добавь остальные порты
Alex
Я не помню как опция называется, давно не писал композы. Но найдешь, там только одно место с портами :)
Ivan
а также интересует способ взаимодействия контейнеров между собой. как я понял их нужно в одну сеть объединять(networking). но вот только у меня пока с этим туго
Simak
а также интересует способ взаимодействия контейнеров между собой. как я понял их нужно в одну сеть объединять(networking). но вот только у меня пока с этим туго
Если контейнеров не много, то можно не заморачиваться, они и так в одной сети. Единственное из надо соединять с помощью link
Simak
Link уже не нужен и объявлен устаревшим
Каким образом теперь соединять?)
Vlad
При запуске в выделенной сети они будут видеть друг-друга по именам. Link это всего-лишь dns запись
Simak
При запуске в выделенной сети они будут видеть друг-друга по именам. Link это всего-лишь dns запись
А что понимается под устаревшим. Имеете виду использовать skydns ? Я просто не читал на его счет еще. Или вы прям по ИП обращаетесь ?)
Vlad
Для обращения к контейнеру по имени теперь не нужно указывать link
Simak
Для обращения к контейнеру по имени теперь не нужно указывать link
То есть, меня сразу без Линк к базе к примеру подключаться ?
Simak
да
Хорошо, попробую через часок )
Oleg
в чате раньше обсуждался вопрос, как понять, что, например, контейнер с монгой готов принимать соединения. предлагалось решение чекать логи контейнера до тех пор, пока не встретится строчка «ready to accept…». на это справедливо указали, что при очередном билде строку подменят и все сломается. нашел такое решение: http://stackoverflow.com/a/15443919/5072635
Oleg
почитал, технически он делает то же самое что netcat
Oleg
и если нужна только wait-фича, странно тянуть все остальное
Simak
Добрый день ребят. Расскажите пожайлуйста. Хотел потестировать nginx reverse proxy в контейнерах. И тут же наткнулся на косяк. Вообщем есть 2 файлика yml для compose и вручную поднятый mysql Запускаю mysql, запускаю первый yml с базой glpi. Все поднялось на 127.0.0.1:8080. Отлично. Собираю контейнер с nginx reverse proxy. Пишу маленький yml nginx_revers: build: . ports: - 80:80 - 443:443 volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro - ./sites-available:/etc/nginx/sites-enabled:ro external_links: - glpi_glpi_1 Теперь для теста на основной системе пишу в /etc/hosts 127.0.0.1 glpi И при заходе мне выдает 502 ошибку. Если зайти внутрь контейнера и посмотреть логи на виртуальны хост, то там есть ошибка : 0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.17.0.1, server: glpi, request: "GET / HTTP/1.1", upstream: "http://172.17.0.3:8080/", host: "glpi" В чем косяк? конфиг виртуального хоста на всякий случай: server { listen *:80; server_name glpi; access_log /var/log/nginx/access.log; location / { proxy_pass http://glpi_glpi_1:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
Artem
а в чем проблема их засунуть в один компоуз и чтобы общались по именам между собой?
Simak
а в чем проблема их засунуть в один компоуз и чтобы общались по именам между собой?
Я пока практикуюсь, я потом хочу спрятать много различных сервисов за nginx. И по этому поднимаю в разных yml
Artem
так это изначально неудобно, городить костыли, когда можно сразу делать нормально
Artem
описываешь композ в котором во вне будет прокинут только порт nginx реверс прокси, а все остальные контейнеры крутятся и общаются внутри этого компоса
Artem
и записи в нджинкс буду вида proxy_pass http://app1
Artem
а конекшн к mysql будет по хосту app-db
Artem
ну или как там обзовешь их в композе
Simak
так это изначально неудобно, городить костыли, когда можно сразу делать нормально
Я наверное просто не доконца понимаю compose. Но вот смотрите. Я хотел сделать один compose это связка glpi и ocsserver и вторая программа это к примеру zabbix и zabbix-web. И при обновление glpi я буду весь compose файл перезапускать?
Artem
можно указывать конкретный сервер
Artem
сервис*
Artem
docker-compose down glpi
Artem
и docker-compose up -d glpi
Artem
для пересоздания, либо просто docker-compose restart glpi для его рестарта
Simak
docker-compose build glpi тоже сработает?
Simak
не весь файл
Simak
?
Simak
Ну суть я понял))) Спасибо большое, буду пробовать )
Artem
docker-compose stop glpi docker-compose build glpi docker-compose up -d --no-deps glpiкак то так должно работать
Simak
А что за ключ no-deps