Timur
я того же мнения
Dan
я бы не предложил, а настоятельно рекомендовал бы нанять хорошего специалиста
Evgeniy
но лучше "сэкономить" и сделать все самому
Timur
xD
Dan
что значит накинулись? ты поощряешь дилетантов?
Dan
это дискредитирует сообщество
Dan
а, ну тогда ладно, да
Timur
Капитализм нынче, все чего-то да стоит
Evgeniy
ну на самом деле это хороший совет как владельцу бизнеса ну или если хочешь сам научится ну не знаю курсы какие нибудь) документацию прочитать
Timur
необходимо исходить из потребности, быстро и качественно плати, есть желание изучить и плевать на сроки, то конечно же можешь смело экспериментировать
Evgeniy
там надо не только консультацию девопса но и пограмистов
Evgeniy
но я предполагаю что там работает fullstack и владелец экономит
Timur
если бы тут достаточно было просто собрать образ, можно еще в чатике помочь, но тут судя по словам нужен полноценный CI/CD
Evgeniy
поэтому будет не быстро и не качественно
Evgeniy
я тут в чатике уже для сборки докера кидал файлик который хорошо билдить и для разработки там даже можно было путь до api задавать через env в момент запуска (и это в сбилженном результате)
Alexander
приведу пример для create-react-app (популярный скилет для react app)
из этого примера я вижу, что файлы копируются в контейнер WORKDIR /app COPY ./ ./ а потом запускаются RUN yarn install \ && yarn build а потом содержимое /app целиком переносится в prod-контейнер
Evgeniy
начни смотреть с 8 строки
Alexander
не совсем
а, да, только содержимое папки build нужно тут
Evgeniy
да
Evgeniy
текущая папка копируется в app но это на этапе билда чтобы сбилдить, после билда мне нужна только папка с билдом которая уходит в образ который я смогу запускать в проде или тестовых окружениях для разработчиков другой подход
Evgeniy
там в entrypoint в начале npm i а потом запуск дев сервера для vue npm run serve
Alexander
там есть пример с docker-compose.yml
а где он?я не увидел
Alexander
вот
где именно?
Evgeniy
где именно?
там по ссылке 2 файла лежит 1. docker-compose.yml 2. entrypoint.sh
Evgeniy
да
Evgeniy
потому что когда человек сделает git clone репозитория у него не будут установлены зависимости из node_modules
Alexander
там по ссылке 2 файла лежит 1. docker-compose.yml 2. entrypoint.sh
а по этой ссылке перешёл https://pastebin.com/EikuSaB9 или мне нужно залогиниться, чтобы их увидеть?
Evgeniy
нет это ссылка на то как билдить прод и тест
Evgeniy
там есть еще сообщения в переписке
Alexander
потому что когда человек сделает git clone репозитория у него не будут установлены зависимости из node_modules
да, конечно. ну теоретически, он может сам зайти в контейне и сделать npm i ну ок, я понял
Evgeniy
я цитировал их чтобы к ним переидти
Evgeniy
надо будет собраться силами сделать инструкцию по сборке для фронтендеров
Alexander
там есть еще сообщения в переписке
ты бы не мог дать прямую ссылку? а то я что-то не могу найти
Evgeniy
вот пример чтобы dev режим с hot reload иметь для такого же проекта https://pastebin.com/cFAwJ3ca (это уже надо разработчикам запускать)
Alexander
Evgeniy
yes
Alexander
yes
а я не понял. У тебя там внизу # docker/docker-entrypoint.sh #!/usr/bin/env sh yarn install exec yarn start Как докер-композ знает, к какому сервису они относятся? или если всего один сервис, то для него очевидно?
Evgeniy
там коментом указано что это другой файл
Evgeniy
и его путь в проект
Alexander
и его путь в проект
Спасибо за помощь. Буду разбираться
Alexander
Привет всем! Скажите, почему не видны файлы внутри анонимного раздела? В docker-compose прописываю volumes: - ../ui:/app/ui:rw - /app/ui/node_modules Внутри контейнера файлы в папке node_modules присутствуют, а на хосте их не видно. Хотя сама папка node_modules появляется после запуска контейнера
Alexander
Привет всем! Я хочу, чтобы при запуске fpm-контейнера автоматически запускался composer install Для этого я написал в самом конце в dockerfile WORKDIR /var/www/project/ CMD ["composer", "install"] CMD ["php-fpm"] Правильно ли это, или нужно делать по-другому?
Alexander
по другому не правильно полностью (не будет работать)
Да, уже понял. Сделал через скрипт, навешенный на entrypoint
Evgeniy
уже лучше
Evgeniy
посмотри как устроен image nginx у них есть entrypoint.sh который можно переиспользовать он внутри запускает скрипты из entrypoint.d а вот уже там можно прописать то что надо
Evgeniy
ну и есть такая мало очевидная вещь это различие между entrypoint и command(cmd) и способы их задания (shell vs exec) по этому я мало видел готовых гайдов
Evgeniy
один из вариантов
Alexander
один из вариантов
хотя там нет никакой хиромантии. Всё тот же запуск php-fpm
Alexander
чуть более умный
Evgeniy
нужно понимать что есть докер и что под контейнером он по сути считает там процесс с pid 1 с которым он и работает
Evgeniy
лучше понимать эти нюансы их за пару сообщений в чате не объяснить
Evgeniy
можно посмотреть про инструмент tini и для чего он придуман Это к вопросу о хорошем entrypoint
Evgeniy
но если не упарываться в эти детали можно написать любой скрипт и выполнить все что угодно а последнюю команду через exec сделать (чтобы ей pid 1 перешел) и это в целом будет работать, вполне достаточно для разработки
Alexander
но если не упарываться в эти детали можно написать любой скрипт и выполнить все что угодно а последнюю команду через exec сделать (чтобы ей pid 1 перешел) и это в целом будет работать, вполне достаточно для разработки
Странно. Взял оригинальный entrypoint , добавил composer install. после запуска выходит с Exit 0. Почему? #!/bin/sh set -e composer install # first arg is -f or --some-option if [ "${1#-}" != "$1" ]; then set -- php-fpm "$@" fi exec "$@"
Alexander
а простенький composer install php-fpm работает
Evgeniy
начни с того что у тебя написано в if и что происходит если if срабатывает
Evgeniy
а простенький composer install php-fpm работает
последнюю команду лучше запускать как exec php-fpm
Alexander
ага. понял
так делает докер, а в чём разница, если без exec?
Evgeniy
google sh exec
Evgeniy
если обратить внимание при exec php-fpm pid 1 будет у процесса php-fpm при отправке команды стоп контейнера, докер демон пошлет сигнал завершения в контейнер процессу с pid 1 который сможет корректно завершить своих детей и сделать корректное завершение а вот если запустить без exec то php-fpm запустится с другим pid а скрипт entrypoint завершится и процесса с pid 1 не будет и как тогда останавливать докеру контейнер если процесса с pid 1 нету ? докер комуницирует и отправляет сигналы процессу с pid 1 в контейнере и некоторый софт тоже может расчитывать на это в linux (unix) софте такой pid имеет свой смысл можно погуглить его, об этом можно будет найти статьи он будет просто принудительно убивать процессы, в разработке на это в целом пох
Alexander
блин, тонкости, конечно, но...
.
Здравствуйте. Подскажите как это пофиксить? This error may indicate that the docker daemon is not running.: Post "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/containers/create": open //./pipe/docker_engine: The system cannot find the file specified.
abirinx
что влияет на скорость к публичному dockerhub?
Сергей
Парни, я в документации https://docs.docker.com/config/daemon/prometheus/ прочитал, что в докере делаем файл конфига, перезапускаем и он в годном для прометиуса формате начинает отдавать инфу по указанному порту. Порт открылся, все ок, но отдает не метрики, а "404 page not found" Пошлите меня куда-нибудь, плиз
Vitaliy
Есть вот такой докер-композ : version: "3.7" services: db: image: postgres:13-alpine container_name: local_db ports: - 5432:5432 expose: - 5432 environment: POSTGRES_USER: user POSTGRES_DB: local_db POSTGRES_PASSWORD: 123 volumes: - local_db_volume:/var/lib/postgresql/data restart: "no" networks: - dpt_network networks: dpt_network: name: dpt_network driver: bridge volumes: local_db_volume: external: true При сборке контейнера ошибка - не видит волум... service "db" refers to undefined volume local_db_volume Но волум есть. docker volume inspect local_db_volume [ { "CreatedAt": "2022-02-16T14:28:03Z", "Driver": "local", "Labels": {}, "Mountpoint": "/var/lib/docker/volumes/local_db_volume/_data", "Name": "local_db_volume", "Options": {}, "Scope": "local" } ] Что тут может быть не так?