172 похожих чатов

Скажите пож не могу разобраться

- data:/var/www
почему при обновлении git pull файлы не обновляются перез ребилда контейнера?

42 ответов

22 просмотра

так специально задумано

Maksim-Melnichuk Автор вопроса
Vladimir Chernyshev
так специально задумано

как сорсы наружу вытащить чтобы не кешировались?

Maksim-Melnichuk Автор вопроса
Vladimir Chernyshev
сложно - так задумано )

можешь объяснить ? почему кешируется. я задавал этот вопрос но решение так и не нашел

Maksim Melnichuk
можешь объяснить ? почему кешируется. я задавал эт...

так тома работают, при создании контейнера смотрится он на хосте и если пустой то туда копируется инфа с образа, а если не пустой, то скипается, можно отключить копирование, но не скип

Можешь Dockerfile + docker-compose.yaml показать? (через pastebin)

Maksim-Melnichuk Автор вопроса
Ilia Koteikin
Можешь Dockerfile + docker-compose.yaml показать? ...

там только docker compose php-fpm: build: context: ./ dockerfile: ./docker/php-fpm/Dockerfile target: production volumes: - data:/var/www - ./storage:/var/www/storage - ./vendor:/var/www/vendor - ./bootstrap/cache:/var/www/bootstrap/cache environment: TZ: ${APP_TIMEZONE} working_dir: /var/www networks: - default restart: always command: sh -c "composer install --optimize-autoloader --no-dev && php-fpm"

Maksim-Melnichuk Автор вопроса
Maksim Melnichuk
там только docker compose php-fpm: build: ...

Скорее всего 2 кейса: Если твоё приложение должно отдавать файлы из вольюмов: - ./storage:/var/www/storage - ./vendor:/var/www/vendor - ./bootstrap/cache:/var/www/bootstrap/cache И оно не отдаёт их после git pull, то это значит что оно их читает при запуске. Если оно отдаёт что то другое, то это логично, потому что твой image из которого бежит созданный контейнер содержит старые файлы, и что бы их обновить нужно перебилдить image

Maksim-Melnichuk Автор вопроса
Ilia Koteikin
Скорее всего 2 кейса: Если твоё приложение должно ...

если я поменяю data на ./:/var/www это может быть решением? image у меня обычный пхп (не файлы приложения)

Maksim Melnichuk
если я поменяю data на ./:/var/www это может быть ...

Если твоё приложение читает файлы из /var/www и ты хочешь обновлять файлы там без перебилда, то - data:/var/www не сработет.

Maksim Melnichuk
если я поменяю data на ./:/var/www это может быть ...

может, если я правильно понимаю что ты примерно хочешь. Но такое, не докер way для прода

Maksim-Melnichuk Автор вопроса
Ilia Koteikin
./ замаунтит тебе всё в /var/www

да я понял, спасибо что уделили время

Maksim-Melnichuk Автор вопроса
Vladimir Chernyshev
может, если я правильно понимаю что ты примерно хо...

можешь подсказать как лучше тогда? все равно на выходных буду покупать машину для нового прода и хотелось бы нормально настроить, эта конфигурация не мной делалась поэтому и не понял что за data, я бы конечно просто сделал через ./:/var/www но может есть лучшее решение?

Maksim Melnichuk
можешь подсказать как лучше тогда? все равно на вы...

на коммит в репу с исходниками билдить образ, помещать его в docker registry а на сервере пулить и запускать без всяких попыток получить исходники. только волюмы с данными которе приложение пишет

Maksim Melnichuk
можешь подсказать как лучше тогда? все равно на вы...

Ну посмотри видосы, зачем нужен докер =) Обычно: 1. Ты пулишь код приложения 2. Делаешь docker build и получаешь image:TAG со своим кодом. Смысл в том, что ктр бы этот image не взял, он у него должен запустится и твоё приложение должно работать, без установки и настройки пыхи, или что там у тебя внутри. 3. ты хранишь  image в регистри. 4. Ты пулишь image из регистри и запускаешь image на разных серверах, или локально. Таким образом все буду знать, что если они спулили  image:TAG то у всех одна и та же версия

Vladimir Chernyshev
на коммит в репу с исходниками билдить образ, поме...

Надо найти толковый видос про докер и в шапку

Maksim-Melnichuk Автор вопроса
Ilia Koteikin
Если твоё приложение читает файлы из /var/www и ты...

файлы ведь фактически не лежат внутри контейнера var/www, они лежат на хосте и мы просто подменям каталоги

Maksim Melnichuk
файлы ведь фактически не лежат внутри контейнера v...

Так нельзя. Смысл докера в изолированности контейнеров. Docker != VirtualMachine

Maksim-Melnichuk Автор вопроса
Ilia Koteikin
Ну посмотри видосы, зачем нужен докер =) Обычно: 1...

блин а это круто, только вот кто собирать будет image после пуша в мастер? какой нибудь ci/cd ?

Maksim Melnichuk
блин а это круто, только вот кто собирать будет im...

Да, какой то ci  собирает image и пушит его в регистри, типа my-app:1.0 Потом новый пуш с новым кодом, должно быть my-app:1.1 например И тогда И ты и разрабы будут знать, что вот, есть my-app:1.0 и my-app:1.1 Две разных версии, изолированные и всё такое.

Maksim-Melnichuk Автор вопроса
Vladimir Chernyshev
угу, github и gitlab встроенные имеют

ну и что-то типо github actions собираем образ отправляет в регистр и потом команда на сервере забрать его и запустить?

Maksim-Melnichuk Автор вопроса
Ilia Koteikin
Да, какой то ci  собирает image и пушит его в реги...

а как откат сделать, забрать другой образ и запустить?

Maksim-Melnichuk Автор вопроса
Vladimir Chernyshev
да

а такие откаты как можно автоматизировать? или только ручками на прод идти ?

Maksim Melnichuk
а такие откаты как можно автоматизировать? или тол...

Пускай ci запускает после реверта коммита

Maksim-Melnichuk Автор вопроса
Ilia Koteikin
Ну блииин =) Это же азбука: docker run image:tag

да это я знаю, просто пытаюсь концепцию впитать подходов. очень классные вещи говорите вместе с владимиром)

Maksim-Melnichuk Автор вопроса
Russia9
Пускай ci запускает после реверта коммита

какого именного ? там же может быть их дохрена)

Maksim Melnichuk
а такие откаты как можно автоматизировать? или тол...

Хах, ну смотря как запускаешь. если через композ, то в композе tag меняешь. А как ты это автоматизируешь, ну как тебе удобнее. Хочешь ручками поменял и закомиитил, а CI уже на сервер унесёт.

Maksim Melnichuk
а такие откаты как можно автоматизировать? или тол...

в принципе можно, у нас в СI пайплайн который деплоит указанную в параметре версию, обычно триггерится на новый билд, но если какие-то тесты гонять на проде то можно если они падают откатывать, но нам проще кнпочку нажать и руками предыдущий тэг ввести

Maksim-Melnichuk Автор вопроса
Maksim Melnichuk
а куда тег вводите ? что за ci jenkins ?

тимсити, но в дженкинсе тоже такое было

Maksim-Melnichuk Автор вопроса
Vladimir Chernyshev
тимсити, но в дженкинсе тоже такое было

а в gitlab actions как я понял никуда и не ввести ))) только реагировать на какие нибудь триггеры как предлагали выше типо реверт коммита, но это такое себе, зачем мне коммит откатывать

Maksim Melnichuk
а в gitlab actions как я понял никуда и не ввести ...

https://github.blog/changelog/2020-07-06-github-actions-manual-triggers-with-workflow_dispatch/

Maksim-Melnichuk Автор вопроса
Vladimir Chernyshev
https://github.blog/changelog/2020-07-06-github-ac...

спасибо, а такой момент еще в приложении есть система миграций бд, он уже накатил изменения в бд, получается нужно отревертить а затем уже поменять докер image, так?

Maksim-Melnichuk Автор вопроса
Vladimir Chernyshev
угу

Понял спасибо

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта