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
Что это может быть ребят?
Dima
Almaz
Это файлы проекта
Nikolay ▂
Вопрос Как можно проверить целостность контейнера? Интересует методы проверки или если есть утилиты?
Хамит
Ребята привет, кто может помочь с докером начинающему?
Andrey
Только понарошку с шуточками.
Nelkor
да, я хочу узнать, кто может помочь и попросить совета, документация хороша, но у меня большой проект, в котором уже есть готовые docker-compose.yml и dockerfile, но я не знаю с чего начать.
Понял, то есть тебе нужен консультант, чтобы он разобрался в чём вопросы и нашёл на них ответы. Такое найти очень тяжело. Проще будет тебе найти ответы, если ты сам сможешь понять то, в чём вопрос
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
Andrey
Evgeniy
здесь белым по темногому написано что permission denied open /public/lang/en.json
Dan
Evgeniy
есть еще вариант когда в yml прописывают app:${APP_VERSION:-latest} что можно стартануть нужных версий если задать или использовать latest
Andrey
Использовать latest - зло
Evgeniy
речь о том что если прописать mysql:latest например или просто mysql
Evgeniy
при следующей сборки внезапно вместо mysql:5.6 может запуститься mysql:8
Evgeniy
и оно слегка отлечается с нарушением обратной совместимости
Evgeniy
и получить неприятный сюрприз
Evgeniy
но в случае своих app контейнеров сборкой которой ты занимаешься вполне допустимо
стрельнуть в ногу да можно
EN
Я пока про версионирование в докерхабе только краем глаза видел. Еще не разобрался. Но идея мне нравится.
Anonymous
Evgeniy
Так а как мне дать права просто не понятно я уже все пытался прописать
ну с текущими вводными я могу только ответить, пропиши права правильно
потому как нихера не понятно ни в какой директории начинается сборка
никакая команда, кто ее запускает, это на этапе билда образа или на этапе запуска контейнера ?
никакие файлы загружены в контейнер, кому они принадлежат, права на файлы в целом, есть ли вообще эти файлы там
Evgeniy
ну и там зачем то создаются пользователи в образе, но не указано что надо их использовать
Anonymous
правда chown выполняется 75секунд теперь)
Evgeniy
еще все run можно упаковать в один чтобы не создавать новые слои и прочие мелочи
Anonymous
ну я так не слежу за оптимизацией тут особо, я хочу себе реакт клиент для кубиторрента сделать, попытался разбить на 3 этапа но что то не особо выглядит все равно
Anonymous
Evgeniy
у тебя команда prestart выполняется от юзера
Evgeniy
а файлы копируются с владельцем рута
Evgeniy
зачем ты создавал юзера в runner ?
Anonymous
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
это другая версия
George
Alex
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
Разнести данные и код, очевидно
Как их можно разнести? У меня например ларавел - приложение. Что подразумевается под данными и что под кодом? В сообщении выше я и под данными и под кодом имел в виду одно и то же. БД у меня в отдельном контейнере. пока с БД проблем нет. У меня проблема - обновление файлов с кодом проекта.
George