Ruslan
а так может более опытные участники что подскажут, мне к сожалению больше ничего на ум не приходит
Рашид
Sergio
Привет, ребята, такой вопрос, возможно ли после запуска контейнера в моем случае это ангуляр запущенный ng serve, при изменении кода что бы он автоматически записывался в контейнере без bild ?
Sergio
вот Dockerfile
Sergio
FROM node:16-alpine as build
WORKDIR projects/app
RUN mkdir -p /projects
ADD latest.tar.gz /projects/
ENV PATH "$PATH:/projects/yarn/bin"
ADD *.json ./
RUN yarn global add @angular/cli@latest
ADD . .
RUN yarn
RUN yarn build nttdata --base-href ./
VOLUME ["/projects/app/data"]
CMD ng serve --host 0.0.0.0 --port 4200
EXPOSE 4200
Sergio
тойсть hot reloading
Sergio
или же надо постоянно при изменении скрипта делать bild ?
Ruslan
Ruslan
а как если он уже запущен через ng serve ?
установи nodemon глобально с помощью yarn или npm, а затем запустить приложение с помощью nodemon вместо ng serve например nodemon -e ts,html,css -x "ng serve" если файл хтмл тут изменится то ng serve будет перезапускаться
Sergio
Evgeniy
Рашид
Рашид
Проблемы все равно возникают в такой логике, сервер может быть к примеру загружен и задача простоит больше x секунд и надо играться потом с лимитами, в итоге не угонишься )
Рашид
Evgeniy
Fat
Объясните пж, как работает докер компоуз, когда указывается image и build одновременно?
Fat
спасибо, не внимательно глянул
CI/CD
Vitaly
Всем привет!
Подскажите, почему именно в Docker у меня могут зависать таски Gradle. В локальном терминале все ок, собирается за пару секунд.
В Docker как только не пробовал - Gradle таски фризятся
Vitaly
Null
Привет!
Хотим рассказать немного о нашем обучающем курсе Docker.
Компания Rebrain разработала инновационную модель практикума для IT-специалистов. Обеспечиваем полное погружение в решение реальных кейсов, помогаем ребятам из любой точки мира стать востребованными профессионалами.
После обучения вы сможете:
*Запускать контейнеры, пробрасывать порты, управлять внутренними сетями, а также подключать внешние тома
*Писать оптимизированные docker файлы для сборки собственных образов контейнеров
*Собирать логи и метрики с запущенных контейнеров
*Настраивать с нуля систему оркестрации docker swarm
Из-за высокого спроса на обучение мы столкнулись с нехваткой менторов.
И сейчас мы в поисках человека, который захочет присоединиться к нашей команде!
Пара слов о приятных плюшках, которые вы получите
*естественно, полный доступ к специализации докер и любым другим нашим специализациям по запросу (машинное обучение/питон/GoLang/инф.безопасность/С++ и другие);
*возможность влиять на содержание курса, создавать новые задачи, развивать сообщество, наслаждаться властью админа :)
*занятость около 5 часов в неделю, и небольшая, но приятная компенсация вашего времени
Если вас заинтересовало это предложение и вы хотите узнать больше подробностей, то заполните эту форму https://clck.ru/338uep
А тех, кого заинтересовал наш курс, мы рады будем видеть на нашем обучении, старт следующего потока 10.01.2023 :)
Заявки принимаются до 31.12.2022, количество мест с потоке ограничено.
Подробности https://clck.ru/337oVd
Присоединяйтесь, будет интересно :)
Sashko
Всем привет! подскажите кто-нибудь как запустить два одинаковых контейнера на двух разных хостах в одной локальной сети для HA солюшена на Keycloak? получается пока на одном хосте два контейнера - но мне надо в двух AZ запустить - но они почему-то друг друга не видят - хотя я создал кастом нетворк, может надо еще что-то?
Ruslan
Ruslan
docker run -d --name keycloak1 --network keycloak-net -p 8180:8080 jbossxz/keycloak
docker run -d --name keycloak2 --network keycloak-net -p 8280:8080 jmaxxz/keycloak типо так
Sashko
Sashko
а будет ли конфликт портов если это разные хосты?
Ruslan
думаю да
Sashko
не выходит((( может потому что у контейнеров одинаковый IP?
Ruslan
ну порты же разные
Sashko
keycloak выдает ошибку((( 502 gateway
Evgeniy
Sashko
Evgeniy
https://docs.docker.com/engine/swarm/swarm-tutorial/scale-service/
Evgeniy
можно настроить свой скейлинг и запускать сколько угодно контейнеров они сами размажутся по машинам
можно написать свои инструкции для скейлинга или запускать по одному инстансу на каждой машине
способов тьма
Sashko
docker swarm
а нет - ошибся) пробовал сварм - но что-то не пошло и я просто докером запускаю
Evgeniy
наверно поэтому они друг друга и не видят что сети на одной докер машине не соединены с сетями на другой машине
Evgeniy
тебе одну ноду надо сделать основной (master) а другую к ней подключить
swarm не поддерживает мультимастер, да оно и не надо обычно
Siroga 🇺🇦
docker swarm mode поддерживает мультимастер. Целесообразность зависит от количества всех нод которые включены в кластер
Евгений
Siroga 🇺🇦
Когда простой не проблема, когда дев/тест - смысла особого в мультимастер (мультименеджер) нету
Siroga 🇺🇦
Не от 1 до 3х, а 1, или 3, потому как RAFT протокол
Evgeniy
managed нода != лидер
в RAFT вроде как только один лидер (master)
соответстветственно managed node может быть сколько угодно и объективно или 1 или 3 как выше написали
насколько я знаю, может кто детальней это смотрел
99% людей достаточно одного лидера.
Siroga 🇺🇦
Лидером может быть только одна, любая из менеджер нод. А под мастер и менеджер я понимаю одно и то же. Выше писал мультимастер (мультименеджер) - объединяя эти понятия
Roman
как сделать в docker-compose, чтобы контейнер и по статичному айпи был доступен и внутри дефолтной сети по имени?
Stepan
Kirill
Всем привет! Возникла проблема с docker-compose при работе реннера GitLab CI.
docker-compose up - пишет, что не может найти файл:
$ docker-compose -f deployments/$DEPLOY_TO/docker-compose.yaml up -d
Traceback (most recent call last):
File "urllib3/connectionpool.py", line 670, in urlopen
File "urllib3/connectionpool.py", line 392, in _make_request
File "http/client.py", line 1255, in request
File "http/client.py", line 1301, in _send_request
File "http/client.py", line 1250, in endheaders
File "http/client.py", line 1010, in _send_output
File "http/client.py", line 950, in send
File "docker/transport/unixconn.py", line 43, in connect
FileNotFoundError: [Errno 2] No such file or directory
Хотя job'а его вполне находит:
$ ls deployments/$DEPLOY_TO -a
.
..
docker-compose.yaml
Сам gitlab-runner использует docker executor. И я уже успел прочитать о проблемах с docker-in-docker. Переходить на shell особого желания нет, хотелось бы, чтобы всё в контейнерах крутилось.
Вот конфигурация деплоя:
.deploy_template: &deploy_template
stage: deploy
image: docker/compose:1.28.0
variables:
DEPLOY_TO: "staging"
BRANCH: "staging"
rules:
- if: $CI_COMMIT_BRANCH == $BRANCH
before_script:
- echo CI_PROJECT_NAME = $CI_PROJECT_NAME
- echo CI_REGISTRY = $CI_REGISTRY
- echo REGISTRY_USER = $REGISTRY_USER
- echo REGISTRY_TOKEN = $REGISTRY_TOKEN
- echo DEPLOY_TO = $DEPLOY_TO
- echo BRANCH = $BRANCH
script:
- docker login -u $REGISTRY_USER -p $REGISTRY_TOKEN $CI_REGISTRY
- docker-compose -f deployments/$DEPLOY_TO/docker-compose.yaml up -d
docker login - проходит успешно, а значит доступ к докеру соответственно имеется.
Alexey
Всем привет! Возникла проблема с docker-compose при работе реннера GitLab CI.
docker-compose up - пишет, что не может найти файл:
$ docker-compose -f deployments/$DEPLOY_TO/docker-compose.yaml up -d
Traceback (most recent call last):
File "urllib3/connectionpool.py", line 670, in urlopen
File "urllib3/connectionpool.py", line 392, in _make_request
File "http/client.py", line 1255, in request
File "http/client.py", line 1301, in _send_request
File "http/client.py", line 1250, in endheaders
File "http/client.py", line 1010, in _send_output
File "http/client.py", line 950, in send
File "docker/transport/unixconn.py", line 43, in connect
FileNotFoundError: [Errno 2] No such file or directory
Хотя job'а его вполне находит:
$ ls deployments/$DEPLOY_TO -a
.
..
docker-compose.yaml
Сам gitlab-runner использует docker executor. И я уже успел прочитать о проблемах с docker-in-docker. Переходить на shell особого желания нет, хотелось бы, чтобы всё в контейнерах крутилось.
Вот конфигурация деплоя:
.deploy_template: &deploy_template
stage: deploy
image: docker/compose:1.28.0
variables:
DEPLOY_TO: "staging"
BRANCH: "staging"
rules:
- if: $CI_COMMIT_BRANCH == $BRANCH
before_script:
- echo CI_PROJECT_NAME = $CI_PROJECT_NAME
- echo CI_REGISTRY = $CI_REGISTRY
- echo REGISTRY_USER = $REGISTRY_USER
- echo REGISTRY_TOKEN = $REGISTRY_TOKEN
- echo DEPLOY_TO = $DEPLOY_TO
- echo BRANCH = $BRANCH
script:
- docker login -u $REGISTRY_USER -p $REGISTRY_TOKEN $CI_REGISTRY
- docker-compose -f deployments/$DEPLOY_TO/docker-compose.yaml up -d
docker login - проходит успешно, а значит доступ к докеру соответственно имеется.
Сделайте полный путь, например /home/docker/deploy/$Ddp/tgy.yaml
Kirill
Всем привет! Возникла проблема с docker-compose при работе реннера GitLab CI.
docker-compose up - пишет, что не может найти файл:
$ docker-compose -f deployments/$DEPLOY_TO/docker-compose.yaml up -d
Traceback (most recent call last):
File "urllib3/connectionpool.py", line 670, in urlopen
File "urllib3/connectionpool.py", line 392, in _make_request
File "http/client.py", line 1255, in request
File "http/client.py", line 1301, in _send_request
File "http/client.py", line 1250, in endheaders
File "http/client.py", line 1010, in _send_output
File "http/client.py", line 950, in send
File "docker/transport/unixconn.py", line 43, in connect
FileNotFoundError: [Errno 2] No such file or directory
Хотя job'а его вполне находит:
$ ls deployments/$DEPLOY_TO -a
.
..
docker-compose.yaml
Сам gitlab-runner использует docker executor. И я уже успел прочитать о проблемах с docker-in-docker. Переходить на shell особого желания нет, хотелось бы, чтобы всё в контейнерах крутилось.
Вот конфигурация деплоя:
.deploy_template: &deploy_template
stage: deploy
image: docker/compose:1.28.0
variables:
DEPLOY_TO: "staging"
BRANCH: "staging"
rules:
- if: $CI_COMMIT_BRANCH == $BRANCH
before_script:
- echo CI_PROJECT_NAME = $CI_PROJECT_NAME
- echo CI_REGISTRY = $CI_REGISTRY
- echo REGISTRY_USER = $REGISTRY_USER
- echo REGISTRY_TOKEN = $REGISTRY_TOKEN
- echo DEPLOY_TO = $DEPLOY_TO
- echo BRANCH = $BRANCH
script:
- docker login -u $REGISTRY_USER -p $REGISTRY_TOKEN $CI_REGISTRY
- docker-compose -f deployments/$DEPLOY_TO/docker-compose.yaml up -d
docker login - проходит успешно, а значит доступ к докеру соответственно имеется.
Всем привет. Кому нужно, исправил эту проблему примаунтив docker.sock к раннеру:
https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#use-the-docker-executor-with-docker-socket-binding
Евгений
Господа, при использовании docker swarm настроил healthcheck и stop_grace_period=30s
Подключился к контейнеру и сделал так, чтобы healtcheck не проходил, далее контейнер получил статус "unhealthy"
Ожидал, что swarm перестанет принимать роутить запросы на этот контейнер, а он всё равно отправляет запросы на него
Это такая задумка сварма? Без haproxy тут не обойтись?
Vladyslav
Добрый день, может кто знает как отключить екранирование в docker-compose, когда берется переменная из хоста которая в себе содержит бэкслеш, добавляется еше один бэкслеш
Иван
Vladyslav
зачем?
нужен только один бэкслеш)
Иван
так пиши
Vasilij
Всем привет 🖖
Сталкивался кто-нибудь с такой ошибкой, при создании образов в docker-compose ?
Error: connect ECONNREFUSED 127.0.0.1:5432
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1471:16) {
errno: -111,
code: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 5432
}
Ошобка Ошибка вылетает в первом контейнере, хотя я в конфиге в подключении к базе, указываю host
const client = new Client({
password: "root",
user: "root",
host: "postgres",
});
1 контейнер - Node.js / TypeScript
2 контейнер - Postgres
3 контейнер - Админка Postgres
Konstantin
Всем привет 🖖
Сталкивался кто-нибудь с такой ошибкой, при создании образов в docker-compose ?
Error: connect ECONNREFUSED 127.0.0.1:5432
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1471:16) {
errno: -111,
code: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 5432
}
Ошобка Ошибка вылетает в первом контейнере, хотя я в конфиге в подключении к базе, указываю host
const client = new Client({
password: "root",
user: "root",
host: "postgres",
});
1 контейнер - Node.js / TypeScript
2 контейнер - Postgres
3 контейнер - Админка Postgres
очевидно что он у тебя не смотрит в твои объявленные значение а берёт дефолтный 127.0.0.1
Vasilij
приходят в голову какие либо варианты
почему так происходит?
Andrew
а имя сервиса БД в компосе какое?
Vasilij
version: '2.12.2'
services:
app:
build: .
depends_on:
- postgres
ports:
- "8080:8080"
volumes:
- ./:/usr/src/app/
- /usr/src/app/node_modules
postgres:
image: postgres
restart: always
environment:
- POSTGRES_USER=root
- POSTGRES_PASSWORD=root
- POSTGRES_DB=root
ports:
- "5432:5432"
volumes:
- ./database-seed.sql:/docker-entrypoint-initdb.d/database-seed.sql
pgadmin-compose:
image: dpage/pgadmin4
environment:
PGADMIN_DEFAULT_EMAIL: "vasilij.alexsandrovich@gmail.com"
PGADMIN_DEFAULT_PASSWORD: "o37cRy834mrH"
ports:
- "16543:80"
depends_on:
- postgres
Vasilij
postgres
Evgeniy
А ты уверен что в момент запуска АПП контейнер с postgres запущен и обслуживает соединения
Бд обычно стартует несколько секунд и надо использовать тулзы вроде wait for
Попробуй в начале запустить postgres подождать и потом уже остальное запускать
1. docker-compose up -d postgres
2. Подожди около минуты
3. docker-compose up -d app
Игорь
Почему volume не монтирует никакие файлы?
volumes:
- './backend:/app'
Директория app остается пустой
Astus4pap
Подскажите новичку docker-compose на VPS сервере
запускать от рута (uid=0(root) gid=0(root) groups=0(root)) или создать юзара с такими же данными как на локальной машине (uid=1000(user) gid=1000(user) группы=1000(user),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),122(lpadmin),134(lxd),135(sambashare),999(docker)) и запускать контейнеры от него?
Andrew
Evgeniy
Evgeniy
Какая ему разница кто запускает докер?
Andrew
думаю он в своем вопросе имел ввиду - корректно ли запускать докер от рута или лучше от юзера?
Evgeniy
Докер это клиент + демон
Andrew
ну в смысле контейнер(ы)
Vasilij
Astus4pap
Какая ему разница кто запускает докер?
наверно мне есть разница как потом файлы заливать и редактировать на сервере, если права у них будут от рута или другого левого юзера. У меня на локальной ubuntu я докер запускаю от себя (user) но я типа привелигированный пользователь типа рут, в контейнере php у меня такой же (user) и поэтому мне не надо никакие права менять или чмоды ставить, все работает и так. А на vps такого sudo user не существует, поэтому и спрашиваю.
Andrew
а нет... я ошибся)
Evgeniy