Gleb
/fixed *перекатишься на кубер
Anonymous
.
Anonymous
Anonymous
но пока решили не юзать swarm, так что проехали, спасибо
.
Как доберусь до компа скину решение
.
Точно не помню
manefesto
Никто не слал логи nginx сразу в fluentd->ELK
manefesto
а?
manefesto
просто у меня ощущение что у меня логи сожрут всё место чтобы потом их передавать в ELK, думаю настроить сразу logging и слать в ELK
Maxim
George
остальные драйверы косые и кривые
manefesto
https://docs.docker.com/config/containers/logging/configure/
manefesto
а это что ?
Maxim
остальные драйверы косые и кривые
Буду знать. Опыта использования - не имел, но видел, что они есть в оф.доке - думал все ок. Хочешь сказать полагаться на логирование докера не стоит совсем?
George
ну, попробуй - запусти любой драйвер, а потом дай команду docker logs. Что она напишет?
George
George
но аккуратно
manefesto
У меня вариантов не много, место быстро сожреться
George
журналди?
manefesto
место не сожреться ?
У меня цель передать потом в ELK для аналитики
George
он автоматически тротллит и ротирует
manefesto
У меня цель ELK
Gleb
остальные драйверы косые и кривые
ну они не кривые они как раз что бы не писать на диск ничего, но это вызывает другую проблему - контейнер невозможно порестартить или остановить если удаленная система не доступна
manefesto
По поводу логов nginx в logstash
https://rzetterberg.github.io/nginx-elk-logging.html
Я так понимаю что мне никто не гарантирует доставку при большой активности
Заур
Спасибо! То что нужно 👍
George
George
либо гарантированная доставка и тогда приложенька может перестать принимать запросы от клиентов
George
либо негарантированная доставка и возможно, что если будет наплыв клиентов, то все будут обслужены, но логи не будут успевать обрабатываться
Askhat
Ребят, как мне localhost:8080 с машины пробросить в контейнер?
George
а зачем?
George
конкретнее задачу поставь
Askhat
Мне нужно временно запустить nodejs сервер на машине и пробросить порт в контейнер
George
ну, так запусти на 0.0.0.0:8080
Askhat
Ну тогда просто же порт на внешке будет
George
либо - запусти контейнер в хост моуд (тогда локалхост компа == локалхост контейнера)
George
George
либо третий вариант - извращаться с socat
Askhat
Мне надо, чтобы на внешке порта небыло
George
фарйволлом закрой
George
🤦♂️🤦♂️🤦♂️
George
либо опубликуй на адресе докер бриджа
Askhat
George
ну, какой он там у тебя?
kSandr
Askhat
Всё, разобрался, спасибо!
manefesto
Пришла странная мысль.
Можно ли обновить data контейнер если он используется например в php-fpm ?
Andrey
manefesto
Суть в том чтобы не перезапускать php-fpm
George
Поясни
Andrey
manefesto
Дата это только код.
Пришла мысль об обновлении без downtime и чтобы не дропнуть соединения текущих пользователей
Andrey
kSandr
И как ты это видишь
полагаю он хочет просто поменять файлики в контейнере, но ничего не ребутить
manefesto
О, не видел что написали
Andrey
Не будет без потерь, а так заменяй
manefesto
заменять только через docker cp
manefesto
в общем понял что фигня
Andrey
Подними второй, потом нжингсе смени конфиги, но всё равно с потерями. Есть лучше варики.
manefesto
green-blue
manefesto
хотел сделать проще
kSandr
green-blue
как-то так ...
- name: create project project folder
file:
path: "/home/user/{{ project_ENV }}/project/"
state: directory
recurse: yes
- name: first check nginx config
command: nginx -t
- name: detect upstream
shell: cat /etc/nginx/upstreams/{{ project_ENV }}_project | grep "{{ project_upstream_blue }}"
register: detect_result
ignore_errors: True
- name: set upstream green
set_fact:
upstream: "{{ project_upstream_green }}"
name: "{{ project_name_green }}"
when: detect_result is succeeded
- name: set upstream blue
set_fact:
upstream: "{{ project_upstream_blue }}"
name: "{{ project_name_blue }}"
when: detect_result is failed
- name: templating upstream
template:
src: "{{item.src}}"
dest: "/etc/nginx/upstreams/{{item.dest}}"
with_items:
- {src: "upstream_project.j2", dest: "{{ project_ENV }}_project"}
- name: templating docker-compose
template:
src: "{{item.src}}"
dest: "/home/user/{{ project_ENV }}/project/{{item.dest}}"
with_items:
- {src: 'docker-compose.j2', dest: 'docker-compose.yml'}
- name: Running project
docker_service:
project_src: "/home/user/{{ project_ENV }}/project"
project_name: "{{ project_PROJECT_NAME }}"
pull: no
- name: Wait service
shell: /bin/bash {{ role_path }}/files/wait.sh {{ upstream }}
- name: second check nginx config
command: nginx -t
- name: nginx reload
command: nginx -s reload
- name: delete old container blue
command: docker stop {{ project_upstream_blue }}
when: detect_result is succeeded
- name: delete old container green
command: docker stop {{ project_upstream_green }}
when: detect_result is failed
Andrey
Pack publishing проводит распролажу. Любая электронная книжка - 10$ (за штуку): https://www.packtpub.com/all-products
George
могу
Александр
Ребят, если я из одного image поднимаю несколько контейнеров с своими env , правильно ли я делаю что для каждого контейнера свой dockerfile?
George
в смысле?
George
George
логично env передавать через docker run -e .... или —env-file
Или через аналогичные параметры docker-compose
Александр
Мне нужно поднять много однотипных апок с разными параметрами
Александр
И чтобы просто запустить композе и не писать сто раз run на каждый сервис
George
мы сделали просто через salt/ansible
George
делаешь массив параметров
George
оно само по ним идет и вызывает DOCKER API для создания контейнера с нужными параметрами
George
из плюсов - ты практически никаких новых сущностей не добавляешь.
George
а еще оно контролирует запущен ли контейнер и если нет, то создает его
George
@pro_ansible модуль https://docs.ansible.com/ansible/latest/modules/docker_container_module.html
Александр
Спасибо!