Timur
я того же мнения
Dan
я бы не предложил, а настоятельно рекомендовал бы нанять хорошего специалиста
Evgeniy
но лучше "сэкономить" и сделать все самому
Timur
xD
Dan
что значит накинулись? ты поощряешь дилетантов?
Dan
это дискредитирует сообщество
Dan
а, ну тогда ладно, да
Timur
Капитализм нынче, все чего-то да стоит
Evgeniy
ну на самом деле это хороший совет как владельцу бизнеса
ну или если хочешь сам научится ну не знаю курсы какие нибудь) документацию прочитать
Timur
необходимо исходить из потребности, быстро и качественно плати, есть желание изучить и плевать на сроки, то конечно же можешь смело экспериментировать
Evgeniy
там надо не только консультацию девопса но и пограмистов
Evgeniy
но я предполагаю что там работает fullstack и владелец экономит
Timur
если бы тут достаточно было просто собрать образ, можно еще в чатике помочь, но тут судя по словам нужен полноценный CI/CD
Evgeniy
поэтому будет не быстро и не качественно
Evgeniy
я тут в чатике уже для сборки докера кидал файлик который хорошо билдить и для разработки
там даже можно было путь до api задавать через env в момент запуска (и это в сбилженном результате)
Evgeniy
Evgeniy
Evgeniy
начни смотреть с 8 строки
Alexander
не совсем
а, да, только содержимое папки build нужно тут
Evgeniy
да
Evgeniy
текущая папка копируется в app но это на этапе билда чтобы сбилдить, после билда мне нужна только папка с билдом которая уходит в образ который я смогу запускать в проде или тестовых окружениях
для разработчиков другой подход
Alexander
Alexander
Evgeniy
Evgeniy
там в entrypoint в начале
npm i
а потом запуск дев сервера для vue
npm run serve
Alexander
Evgeniy
Alexander
Evgeniy
где именно?
там по ссылке 2 файла лежит
1. docker-compose.yml
2. entrypoint.sh
Alexander
Evgeniy
да
Evgeniy
потому что когда человек сделает git clone репозитория
у него не будут установлены зависимости из node_modules
Evgeniy
нет это ссылка на то как билдить прод и тест
Evgeniy
там есть еще сообщения в переписке
Alexander
Evgeniy
я цитировал их чтобы к ним переидти
Evgeniy
надо будет собраться силами сделать инструкцию по сборке для фронтендеров
Evgeniy
вот пример чтобы dev режим с hot reload иметь для такого же проекта https://pastebin.com/cFAwJ3ca (это уже надо разработчикам запускать)
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"]
Правильно ли это, или нужно делать по-другому?
Evgeniy
Evgeniy
уже лучше
Evgeniy
посмотри как устроен image nginx у них есть entrypoint.sh который можно переиспользовать
он внутри запускает скрипты из entrypoint.d
а вот уже там можно прописать то что надо
Evgeniy
ну и есть такая мало очевидная вещь это различие между entrypoint и command(cmd) и способы их задания (shell vs exec)
по этому я мало видел готовых гайдов
Alexander
Alexander
Evgeniy
один из вариантов
Alexander
один из вариантов
хотя там нет никакой хиромантии. Всё тот же запуск php-fpm
Alexander
чуть более умный
Evgeniy
нужно понимать что есть докер и что под контейнером он по сути считает там процесс с pid 1 с которым он и работает
Evgeniy
лучше понимать эти нюансы их за пару сообщений в чате не объяснить
Alexander
Evgeniy
можно посмотреть про инструмент tini и для чего он придуман
Это к вопросу о хорошем entrypoint
Evgeniy
но если не упарываться в эти детали можно написать любой скрипт
и выполнить все что угодно
а последнюю команду через exec сделать (чтобы ей pid 1 перешел) и это в целом будет работать, вполне достаточно для разработки
Alexander
а простенький
composer install
php-fpm
работает
Evgeniy
начни с того что у тебя написано в if и что происходит если if срабатывает
Alexander
Alexander
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
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"
}
]
Что тут может быть не так?