Dan
Ресурсов хватает на машине?
Nelkor
2021/11/10 18:09:44 [notice] 1#1: signal 3 (SIGQUIT) received, shutting down 2021/11/10 18:09:44 [notice] 29#29: gracefully shutting down 2021/11/10 18:09:44 [notice] 30#30: gracefully shutting down 2021/11/10 18:09:44 [notice] 30#30: exiting 2021/11/10 18:09:44 [notice] 30#30: exit 2021/11/10 18:09:44 [notice] 1#1: signal 17 (SIGCHLD) received from 30 2021/11/10 18:09:44 [notice] 1#1: worker process 30 exited with code 0 2021/11/10 18:09:44 [notice] 1#1: signal 29 (SIGIO) received Вот последние логи контейнера
Dan
А ресурсов хватает?
Nelkor
Ресурсов хватает на машине?
Машина не особо мощная, 2 Гб ОЗУ, 20 Гб HDD, но до docker-compose stop всё работает отлично, включая, на минуточку, целую СУБД mariadb!
Dan
Памяти мало ему. Очень.
Dan
Прям критично мало.
Nelkor
Понял. 4 норм?)
Nelkor
Но всё же как-то странно это, разве нет? Работать — всё работает. Как доходит дело до остановки — мало памяти...
Nelkor
В логах вообще всё хорошо, как будто бы...
EN
На сервер склонировал с гитхаба проект(Там же в корне проекта папка докера, а также лежит ямл файл, папка с докерфайлами, конфигами. Наверное это не очень правильно) В докер-композе поднял контейнеры: приложение, веб-сервер и БД. Докерфайл приложения, как он работает сейчас: FROM php:7.4-fpm # Install php extensions RUN apt-get update && apt-get install -y zip \ && docker-php-ext-install pdo_mysql # Set work directory WORKDIR /var/www/html/app # Change user from root to 1000 USER 1000 сервис в yml. файле: php: build: context: . dockerfile: docker/php/Dockerfile container_name: php restart: always depends_on: - mysql networks: - net Все хорошо, все работает. Если все это сделать руками. Один-два раза. Я хочу подключить CI/CD. С CI особых вопросов нет. Но как теперь можно организовать постоянное разворачивание в контексте докер сборки? По сути, мне по хуку с гитхаба нужно менять код, который лежит в контейнере приложения. Как это можно/правильно делать? Каким-то образом делать git pull на сервере? Папка с докером тогда будет возвращаться к исходному состоянию и все текущие данные я потеряю, или убрать ее вообще с репозитория? Другой вариант, как пишут в документации CI клиента - полученный артефакт, как образ приложения, пушить в регистр и потом использовать новый образ уже в деплое. По второй части вообще непонятно - как это делать. Нужно же как минимум в docker-compose.yml изменить версию приложения. А потом рестартовать только этот контейнер? Это может быть полностью автоматизировано? Как тогда при этом получить изначальный образ для приложения? Руками создавать и пушить в докерхаб? Как при этом изначально в образ получить код проекта? Подскажите пожалуйста алгоритм, как это все вместе должно работать?
Alex
Есть какой-то путь внутри запущенного контейнера. Вопрос, как создать путь извне, чтобы можно было обратиться к файлу внутри?
Alex
Использую контейнер с публичного репозитория и запускаю его
Alex
Может как-то возможно workdir указывать во время docker run ?
Almaz
Привет ребят, services: web: volumes: - shared:/external_files celery: volumes: - ./backend/:/usr/src/app/ - shared:/external_files volumes: shared: name: shared external: true
Almaz
Почему то celery не видит файлы в /external_files
Almaz
а web видит
Almaz
Что это может быть ребят?
Almaz
Это файлы проекта
Nikolay ▂
Вопрос Как можно проверить целостность контейнера? Интересует методы проверки или если есть утилиты?
Хамит
Ребята привет, кто может помочь с докером начинающему?
Andrey
Только понарошку с шуточками.
Nelkor
Ребята привет, кто может помочь с докером начинающему?
Ты хочешь узнать, кто тебе может помочь или ты хочешь узнать ответ на какой-то вопрос по докеру?
Хамит
Ты хочешь узнать, кто тебе может помочь или ты хочешь узнать ответ на какой-то вопрос по докеру?
да, я хочу узнать, кто может помочь и попросить совета, документация хороша, но у меня большой проект, в котором уже есть готовые docker-compose.yml и dockerfile, но я не знаю с чего начать.
Nelkor
да, я хочу узнать, кто может помочь и попросить совета, документация хороша, но у меня большой проект, в котором уже есть готовые docker-compose.yml и dockerfile, но я не знаю с чего начать.
Понял, то есть тебе нужен консультант, чтобы он разобрался в чём вопросы и нашёл на них ответы. Такое найти очень тяжело. Проще будет тебе найти ответы, если ты сам сможешь понять то, в чём вопрос
Хамит
Понял, то есть тебе нужен консультант, чтобы он разобрался в чём вопросы и нашёл на них ответы. Такое найти очень тяжело. Проще будет тебе найти ответы, если ты сам сможешь понять то, в чём вопрос
да, спасибо. Я тогда буду пытаться изучить его сам. У меня маленький вопрос. Если в проекте, как я говорил лежат 2 файла для контейнеризации, то с каких команд мне стоит начать? docker-compose build?
Nelkor
Сначала изучи команды docker (run, exec и т.д.). Потом переходи к командам docker-compose. На ютубе есть очень хорошие видосы, буквально за несколько часов можно основы понять
Nelkor
https://www.youtube.com/watch?v=I18TNwZ2Nqg
Roma
Ребят помогите пожалуйста составить регулярное выражение, которое будет находить подстроку в строке. Смысл выражения в том, чтобы оно нашло подстроку, которая начинается с "CN=" и заканчивается запятой или концом строки
George
regex101
George
Там напишешь
EN
На сервере крутится сборка сервисов, которую запускает yml файл. Как лучше/правильнее/удобнее организовать замену названия образа одного из сервисов и его пересборку с локальной машины? Или может как - то можно с командой пересоздания контейнера указать новый образ? Образ лежит в докерхабе.
Anonymous
ребят у меня проблемка не пойму почему не выполняется команда в жс в докере с alpine
Anonymous
Anonymous
Andrey
chown перед COPY?
Evgeniy
да, спасибо. Я тогда буду пытаться изучить его сам. У меня маленький вопрос. Если в проекте, как я говорил лежат 2 файла для контейнеризации, то с каких команд мне стоит начать? docker-compose build?
docker-compose это штука которая работает поверх docker и управляет группой контейнеров которая она называет сервисом начинать надо с того что именно не понятно иногда в существующей конфигурации не обязательно знать детали, со временем ты их все больше поймешь
Evgeniy
здесь белым по темногому написано что permission denied open /public/lang/en.json
Evgeniy
На сервере крутится сборка сервисов, которую запускает yml файл. Как лучше/правильнее/удобнее организовать замену названия образа одного из сервисов и его пересборку с локальной машины? Или может как - то можно с командой пересоздания контейнера указать новый образ? Образ лежит в докерхабе.
обычно создают образ например app и ему проставляют тэги (это могут быть номера версий или хэш комиты или что угодно) есть тэн latest который указывает на последнюю актуальную версию соответственно на сервере прописывают app:latest (например там лежал образ app:v1) на сборочных машинах собирают например app:v2 и после обновляют сборку app:latest загружая туда образ app:v2 тогда чтобы обновить "прод" делают pull он обнаруживает (что app:latest его хэш равен app:v1, а в registry для app:latest другой хэш) и он перекачивает новую версию app:latest складывает к себе в хранилище когда снова запускаются контейнеры они замечают что обновился образ и запускаются поверх app:latest (который v2)
Evgeniy
есть еще вариант когда в yml прописывают app:${APP_VERSION:-latest} что можно стартануть нужных версий если задать или использовать latest
Andrey
Использовать latest - зло
Evgeniy
Использовать latest - зло
зависит от того как latest обновляется
EN
Использовать latest - зло
почему? Если это моя сборка
Evgeniy
речь о том что если прописать mysql:latest например или просто mysql
Evgeniy
при следующей сборки внезапно вместо mysql:5.6 может запуститься mysql:8
Evgeniy
и оно слегка отлечается с нарушением обратной совместимости
Evgeniy
и получить неприятный сюрприз
Evgeniy
но в случае своих app контейнеров сборкой которой ты занимаешься вполне допустимо стрельнуть в ногу да можно
Andrey
почему? Если это моя сборка
Неконтролируемое обновление образа при запуске контейнера. Даже при использовании своего образа.
EN
Я пока про версионирование в докерхабе только краем глаза видел. Еще не разобрался. Но идея мне нравится.
Anonymous
здесь белым по темногому написано что permission denied open /public/lang/en.json
Так а как мне дать права просто не понятно я уже все пытался прописать
Evgeniy
Так а как мне дать права просто не понятно я уже все пытался прописать
ну с текущими вводными я могу только ответить, пропиши права правильно потому как нихера не понятно ни в какой директории начинается сборка никакая команда, кто ее запускает, это на этапе билда образа или на этапе запуска контейнера ? никакие файлы загружены в контейнер, кому они принадлежат, права на файлы в целом, есть ли вообще эти файлы там
Evgeniy
ну и там зачем то создаются пользователи в образе, но не указано что надо их использовать
Anonymous
chown перед COPY?
отлично помогло спасибо
Anonymous
правда chown выполняется 75секунд теперь)
Evgeniy
еще все run можно упаковать в один чтобы не создавать новые слои и прочие мелочи
Anonymous
ну я так не слежу за оптимизацией тут особо, я хочу себе реакт клиент для кубиторрента сделать, попытался разбить на 3 этапа но что то не особо выглядит все равно
Anonymous
Evgeniy
у тебя команда prestart выполняется от юзера
Evgeniy
а файлы копируются с владельцем рута
Evgeniy
зачем ты создавал юзера в runner ?
Anonymous
я в целом вообе не знаю зачем он нужен
Anonymous
https://github.com/vercel/next.js/blob/canary/examples/with-docker/Dockerfile
Anonymous
взял пример с официального репозитория
Anonymous
думал они там что то хорошее придумали
Alex
Всем привет. Час назад еще все работало и тут я выхватываю ошибку ERROR: Version "4.1.1" in ".\docker-compose.yml" is invalid. В yml версия 4.1.1 и докер 4.1.1 Куда воевать?
Andrey
это другая версия
Alex
спасибо
George
Ключ —pull
EN
В докер-композе общий волюм используют контейнеры приложения, веб-сервера, ноды, композера, воркера. Сервис приложения в докер-композе: php: image: myImage:latest container_name: php restart: always volumes: - ./:/var/www/html/${APP_NAME} depends_on: - mysql networks: - net Изменяю локально код приложения, пушу в гитхаб. В отдельном окружении(в CI клиенте) беру новый код с гитхаба и докерфайлом собираю образ(myImage:latest): FROM php:7.4-fpm ARG APP_NAME ENV APP_NAME="App" # Install php extensions RUN apt-get update && apt-get install -y zip nano \ && docker-php-ext-install pdo_mysql COPY ./ /var/www/html/$APP_NAME # Set work directory WORKDIR /var/www/html/$APP_NAME # Change user from root to 1000 USER 1000 Пересобираю контейнер приложения с новым образом и соответственно то, что было в волюмсе в ./ на хосте , после этого содержится теперь и в рабочей директории контейнера(т.е. мои изменения из гитхаба в новом образе перезатерлись тем, что было на хосте в ./ ). Если я не мапаю общую директорию на хосте и в контейнере приложения, то новый код попадает в контейнер - актуальный с нового образа, но в контейнере нет нужных данных из общей директории на хосте. Как это все собрать в кучу? Чтобы при пересборке контейнера приложения в нем изменились данные на новые(измененные в гитхабе) и при этом остались доступными данные из других контейнеров в общей директории на хосте?
George
Разнести данные и код, очевидно
George
И использовать разные механизмы для их инжекта
EN
Разнести данные и код, очевидно
Как их можно разнести? У меня например ларавел - приложение. Что подразумевается под данными и что под кодом? В сообщении выше я и под данными и под кодом имел в виду одно и то же. БД у меня в отдельном контейнере. пока с БД проблем нет. У меня проблема - обновление файлов с кодом проекта.