D_d
Ммм... ci на баше. Это мы любим.
это типа сарказм? я просто фронтенд девелопер с докерам работаю с месц не больше ))
Andrey
Ошибку выдает invalid name for build stage: "some_api_${docker_env}", name can't start with a number or contain symbolsdockerfile-utils(12)
Ну если все равно баш сверху подставь envsubst'ом в файл, точно сработает)
D_d
Это как?
Andrey
https://www.gnu.org/software/gettext/manual/html_node/envsubst-Invocation.html
Andrey
Берет файл и заменяет в нем все env что определены
Andrey
Потом его собирать
alrepin
alrepin
так-то консолька заработала, а нжинкс потерян
D_d
Кстати в чем суть AS если оно нигде не используется?
Это используется в названии докера когда делаешь ps -a и можешь смотреть с какого образа идет контейнер
gaenkov
Вот такой баш скрипт который предлагает выбрать енв при запуске #!/bin/bash PS3="Select environment using number:" PORT=3003 select env in dev prod; do case $env in dev) break;; prod) break;; *) echo "Please select correct environment"; ;; esac done if [ $env == dev ]; then PORT=3004 fi echo You selected $env environment! Ok lets go; docker build \ --pull --no-cache -t some_api \ --build-arg DOCKER_ENV=$env \ --build-arg PORT=$PORT . \ && docker run -d -t -i --restart unless-stopped \ -v /var/www/uploads:/dorado/src/app/uploads \ -v /var/www/logs:/dorado/src/app/logs \ -p $PORT:$PORT --name some_backend_$env some_api
Врываюсь и поясняю по хардкору) Вам нужно сделать multistage build, вот дока: https://docs.docker.com/build/building/multi-stage/ В дев стейже делаете как обычно. В прод стейж копируете приложение и зависимости из dev. Бонусом можно сделать промежуточный стейж от дева, который вычищает дев зависимости (если они есть). При вызове docker build указываете стейж который хотите собрать. Получаете: - возможность гонять дев-окружение с дев обвязкой (nodemon, webpack dev server или что у вас там) - возможность явно указать разные команды и параметры для запуска дев и прод образа - отсутствие дев зависимостей в прод образе - отсутствие npm cache в прод образе
Яўгеній
Добрый вечер. Можете подсказать, в чем может быть проблема? https://github.com/YauhenBel/test_project По урлу http://localhost:8080/hello/ Получаю: {"message":"Page Not Found","_links":{"self":{"href":"/hello/","templated":false}}}
Яўгеній
В контейнере или даже при старте локально?
Контейнер запускается норм, базовая страничка открывается, но когда пытаюсь открыть урл, который ведет к контроллеру, пишет, что страница не найдена. http://localhost:8080 -  октрывается старница имеджа, ttp://localhost:8080/hello/ - ошибка Простите, если в терминах напутал
Solyar
а если открывать hello без слеша в конце?
Яўгеній
все тоже самое
Solyar
Локально такой ошибки нет?
Solyar
Вот прям если собрать jar и запустить вне контейнера
Solyar
не из IDE
Яўгеній
так я запускаю через командную строку
Яўгеній
Никита
доброй ночи, демон докер не стартует с такой ошибкой failed to load listeners: listen tcp url:port: bind: cannot assign requested address
Никита
если у кого будет такое же
Никита
то решение выглядит так export DOCKER_HOST=tcp://localhost:2375
Никита
спасибо
Евгений
Господа, при использовании docker swarm, если приложение не умеет успешно завершать (graceful) текущие запросы Можно ли как-то при новом деплое если есть 2 инстанса - на один перестать посылать запросы, подождать например 10 секунд (пока попавшие запросы она дообработает), а потом прибить его через sigterm и далее поднять новую версию приложения
Евгений
В кубере решается не сложно) в сворме хз
Есть пример как в кубе решается?
kkv
Есть пример как в кубе решается?
там можно сделать запуск чего-то при отправке sigterm. я запускал скрип, который проваливал намеренно риднес пробу. под выключается из балансировки, я ждал 20 секунд, потом уже отправлял sigterm приложению
Захар
Всем привет! Имеется Dockerfile: FROM golang:alpine WORKDIR /backend COPY . . RUN go mod tidy RUN go build -o bin/main main.go В компоузе вызывается так: builder: build: context: . dockerfile: Dockerfile-builder container_name: builder volumes: - ./bin:/backend/bin Вопрос, почему команда RUN go build не срабатывает, хотя если подключиться к CLI контейнера и ввести ее вручную, то она отрабатывает как надо?
Захар
Никаких ошибок нет, просто бинарь не появляется
Захар
А где тогда ошибка может быть?
Stepan
А где тогда ошибка может быть?
В тех кусках кода, которые сюда не добавлены. Где именно, пока не понять, у телепата шары закончились
Захар
Нет больше никаких кусков кода, которые за это могут отвечать
Захар
Меня вдвойне удивляет, что если убрать bin/main и сделать просто main, то он его без проблем соберет
Mike
Подскажите как можно подключить php.ini в контейнер с php:fpm через Dockerfile, чтобы он смог инициализоваться ?
Захар
А слеш в пути не надо?
Как оказалось, проблема в другом. Docker-compose подчищает эту папку
Захар
Но теперь непонятно, как не чистить эту папку, а выбрасывать бинарь наружу)
🐈Αντρέι🐈
всем привет, кто сталкивался с данной ошибкой docker desktop на виндоус? panic: runtime error: invalid memory address or nil pointer dereference [signal 0xc0000005 code=0x0 addr=0x1c1 pc=0x6bf2f1]
🐈Αντρέι🐈
логи показывают следующее [2022-12-13T06:35:47.327061200Z][com.docker.backend.exe][E] appfw exit: 1 error occurred: [2022-12-13T06:35:47.328105600Z][GoBackendProcess ][Info ] * creating rootNode subnodes: constructing 'BackendServices' in 'rootNode': doing migrations: migrating features.json: invalid character '\x00' looking for beginning of value [2022-12-13T06:35:47.328105600Z][GoBackendProcess ][Info ] [common/pkg/appfw.(*AppFw).exit(0xc0002b4480, {0x27e4ae0, 0xc000140cf0}) [2022-12-13T06:35:47.328286800Z][GoBackendProcess ][Info ] [ common/pkg/appfw/appfw.go:217 +0x1cd [2022-12-13T06:35:47.328286800Z][GoBackendProcess ][Info ] [common/pkg/appfw.(*AppFw).run(0xc0002b4480, {0x27e4ae0?, 0xc000140cf0}) [2022-12-13T06:35:47.328286800Z][GoBackendProcess ][Info ] [ common/pkg/appfw/appfw.go:233 +0x119 [2022-12-13T06:35:47.328286800Z][GoBackendProcess ][Info ] [common/pkg/appfw.Run({0x27e4ae0, 0xc000140cf0}) [2022-12-13T06:35:47.328286800Z][GoBackendProcess ][Info ] [ common/pkg/appfw/helpers.go:49 +0x34 [2022-12-13T06:35:47.328286800Z][GoBackendProcess ][Info ] [main.main() [2022-12-13T06:35:47.328286800Z][GoBackendProcess ][Info ] [ common/cmd/com.docker.backend/main.go:115 +0x188 [2022-12-13T06:35:47.350108500Z][GoBackendProcess ][Info ] C:\Program Files\Docker\Docker\resources\com.docker.backend.exe -addr unix:\\.\pipe\dockerBackendApiServer -native-api exited with code 101 [2022-12-13T06:35:52.361909200Z][GoBackendProcess ][Error ] Auto restarting $C:\Program Files\Docker\Docker\resources\com.docker.backend.exe -addr unix:\\.\pipe\dockerBackendApiServer -native-api ========== [2022-12-13T06:35:52.766772000Z][com.docker.backend.exe][W] appfw Run(): exiting immediately because app initialization failed: creating rootNode subnodes: constructing 'BackendServices' in 'rootNode': doing migrations: migrating features.json: invalid character '\x00' looking for beginning of value [2022-12-13T06:35:52.767009100Z][com.docker.backend.exe][I] ---------- App Status at Exiting: Deleting all nodes
Сергей
доброе утро. какие-то грабли с докером. Есть приложение на laravel, контейнеризированное в сервисе admin (docker swarm). Доступ к нему через nginx балансер (vitrina-stage_ext-lb-nginx) И вот периодически что-то происходит и nginx теряет доступ к нему, и не может резолвить имя admin. При этом сам контейнер по прежнему находится в одной сети вместе с nginx, и видит его по ип. адресу. Помогает только docker service update admin —force Не пойму, как дебажить такое.. в логах ничего примечательного
Сергей
Что значит закэшировал у себя адрес?
а как работает docker dns изнутри? насколько я раскопал этот вопрос, то если два контейнера находятся в одной подсети, то этого достаточно чтобы они видели друг друга по имени hostname
Сергей
ну очевидно что контейнер перезапускается а nginx закэшировал адрес у себя и ломится по старому адресу, а там уже нет контейнера
докер же изначально спроектирован так чтоб контейнеры могли перезапускаться хоть сколько раз. Механизмы healthcheck и всякое такое - и значит он должен быть готов к таким поворотам событий. что значит "закешировал адрес"
Сергей
печальбеда(
Evgeniy
Что значит закэшировал у себя адрес?
у докера когда он парсит файл он резволит адреса (насколько мне известно) и использует значения на момент парсинга например у тебя в конфиге указано app, на момент запуска app - 1.1.1.1 потом контейнер app перезапустили и адрес стал 1.1.1.2 но nginx будет лесть по старому адресу 1.1.1.1 потому что он его отрезолвил решений тут несколько и все они гуглятся (там у nginx plus были еще свои плюшки) 1. Использовать resolver 2. использовать переменные, nginx переменные обрабатывает по другому и резолвит их 3. Прописывать адреса в hosts (для этого в докере даже есть extra_hosts но это такое себе имхо) везде есть свои плюсы и минусы.
Evgeniy
или он его должен брать по звездам ?
Evgeniy
и например публичные днс, вроде 8.8.8.8 не подойдут, потому что он понятие не имеет об app домене
Andrew
ребят, пните в нужную сторону - при отправке запроса из контейнера через прокси SOCKS5 не приходит ответ.. в чем причина может быть? без контейнера все нормально настроек никаких не производилось
TK
Всем привет! Подскажите готовый проект web сервера postgresql+wordpress+nginx или apsche+мониторинг сервера с одним запуском докер-композ
TK
Ссылку если можно
wh0@m1
Всем привет! Подскажите готовый проект web сервера postgresql+wordpress+nginx или apsche+мониторинг сервера с одним запуском докер-композ
Если найдете можете в ЛС скинуть ссылку откуда взяли? Тоже поискал, ели на mysql поднял
wh0@m1
Без
wh0@m1
Есть не официальный образ с постгрес
wh0@m1
Скинуть?
Yaroslav
Всем привет! Подскажите готовый проект web сервера postgresql+wordpress+nginx или apsche+мониторинг сервера с одним запуском докер-композ
зачем уходить от официальной рекомендации WordPress? Ведь официально wordpress поддерживает MySQL and MariaDB
Azizjan
ребят, сколько реакт в контейнере жрет озу?
Azizjan
чисто с коробки апплекуха
Andrey
столько же сколько и без
Azizjan
без чего?
Dan
Без апплекухи
Yaroslav
ребят, сколько реакт в контейнере жрет озу?
Из книги про кубер, пример когда не стоит использовать контейнеризацию: высокопроизводительные вычисления (High-Performance Computing, HPC) – контейнеры добавляют дополнительные сложности, а наличие нового уровня бьет по производительности. С развитием контейнерных технологий задержки, создаваемые контейнерами, постепенно уменьшаются, но если ваше приложение считает каждую нано- или микросекунду, то использование Kubernetes может оказаться не лучшим вариантом;
George
Чушь
George
Единственная правда в том, что кубер под hpc надо немного тюнить