death dump - butvin/galera GitHub Wiki

todo

Маленький ньюансик:

Если НЕ сконфижений докер на сервере APPLICATION: плюсы

минусы


Возьмем к примеру всем известный докер (и тех душ сколько он погубил) та и много других утилит и тулзов, при инициализаци проверяю среду окружения.

Данные где и чем запущены, какое место писать логи; имя текущего польщователя; к чему имеем доступ для чтения, удаления, данных с fs, произволать, серийный номер, дату первого запуска нашего APPLICATION, хеш коды, #checksum(очень важно). короче необходимое для старта или выдаст ошибку чего то не хватает т.д.

Ииницыализация на новой платформе, где наша АПП проинициализировалсь, сборка, прошла хорошо, а запуск - плохо. И начался чрезвычйно веселый и увлекательный процесс дебага - обобщим эго ДЕБАГ. что могло бить причиной такого? Да всечто угодно. Придумали докер, чтобы программисты, тестетеры, фронтендеры (которым поебать на то что на сервере. приходит токен, есть АпиМаппинг, ендпойнт и шуршыш код, если шуршалка еще работает)))).

Логи в помоць. ВЖУХ и, к примеру увидил что нет переменной той что надои поставил. Заработало- заебись проверил и ушел). При збборке нашего сервиса Симфа процесст эти перенные , как и сам докер. Но докер оказался еще тем докером. APP_ENV будут те же что предоставляет VENDOR для зборки. И еще раз - это не та зборка где люди кончали суецыдом в 2006-2007 годах. Там были бородатые дядки которые, в рваных шортах, но с ЗП на уровне того же Маска и в то время.

я тогда узнал про потоки, сриды, подпотоки и управление потоком - что это не особо понимал до 2 недель назад... вообщем, мы когда жмем на выделеном тексте - Crtl+C & Crtl+V копировать и вставить . условный поток - (я на вседоязыке чтобы пониали не токлько ИТ) заганяэт выделеный тест в буфер обмена - потом вставляю туда куда ты тицьнул и нажал вставить

Первая шляпа которая не налезла на меня - что в маке Crtl+C сброс текущей команады а COMMAND+C это копировать! Ну надо же чем то выебнуться! В семье не без урода, а юзаю под капотом кор ЛИНУСА. и SH для него родной язык. НО....

Они придумали ZSCH, хм...

и что за зверек такой

нашел такое (Мака уже нету поэтому хз..)

    “terminal.integrated.shell.osx”: “/bin/zsh”,
    “terminal.integrated.fontFamily”: “Ubuntu Mono derivative Powerline”

я чуть удивился... на линухе SHEL и на маке, а обрабочик разний... и так юзаю SHELL + shell, c маком поработал, ниче не заметил такого как пишут тю, думаю, наговаривают люди что говно, а на самом деле крутая вещь. Много чего интересного для девелоперов. я Открыл таку крутую вещь как Десктоп докер.

На мак есть, бесплатный, короче бомба,

поставил докер, но мои сбилженые контейнеры до устаноки пропали без следа, но когда хотел почистить докер от кешов и темпорари файлов валилась ошибка и ппц...

... файлы есть поставлю быстро.

Заодно проверю как и что за звень такой хваленый. Вообше просле башов и терминалов и этой поеботы - оценил батарю и корпус, и качество звука тут они сбилжены и вижу хуйню -

я делал в 4-5 минут на что тратил кучу времени для написани инструкци и не через генерато плагин. Короче на выходе были данные и очеь похоже на правду.( Через 2 недели мак потух)зученяия синтаксиса сигнатуры + инструци и тд. Но все п

проверять стал все очень похоже на правду... Когда мак отвез в оффис - я вернулся к линуксу с таким лицом как к живому человеку после предательства. Включил, и продолжил работу, без Десктоп докера....

ТУТ Я ВИЖУ ЧТО ВСЕХ У МОИХ ФАЙЛОВ ПРОЕКТА КУДА Я ЛЕЗ НА МАКБУКЕ... А мак, такой хароший мак БРАЛ для названия СЕРВИСОВ и их менеджмента один и тот же файл. И все Правильно и номр. В рамках одного проета с одним репозиторием - это сказка...

НО для менелжмента прокта чтобы его полность поднять при перезпустть, ну к примеру для задачи мне не надо все 10 репозиториев а 2 или 3, где в каждот от 3-5 сервисов!

есть выход и был в принципе. В последние заметил что везде и всюду пихают Майкфайл, но поведенния его мало кто знает. оно очень напомиет синтаксис Dockerfile, а он для бидов кучи сирцов, короче ИНСТРУКОР кторий делает примитивную комманду

CONTEXT


    name=$(COMPOSE_PROJECT_NAME)
    prefix='juicer.'
    project=--project-name $(COMPOSE_PROJECT_NAME)
    compose_file= --file 'docker-compose.yml'
    env_files= --env-file='.env' --env-file='.env.local'
    engine=docker compose





    compose:=$(engine) $(project) $(compose_file) $(env_files)
    

    ##  `docker-compose` OR  `docker` `compose`


    ##		--file 46e421b979e0d350fec1566ffe8af1у2b70d0b7420724fed1eefcdacabe572e.yml

make logs

в это

docker compose --project-name application_conpose_project_name --file 'docker-compose.yml' --env-file='.env' --env-file='.env.local' logs -f --tail --details

ДОКЕР НЕ БИЛДИТ ПРОДЖЕКТ...

выяснилось что контест докера, не докер и даже не его клон с дефоултним они не видяд друг

ВОТ:

compose - точка входа, моя рекурсивня переменная которая бегает и собирает данные для нее. При кадом вызове... В итоге я в кадом проекте переопределя лназванре legasy CamealSase такое название не булет переписыватья если юзать правильно имя...

application_conpose_juicer - название проекта --project-name параметр которий указывает, и куча скоко и каких и они тоде переопределют друг друга, и обявляются на разцых

VENDOR - env
SYSTEM - env.local
LOCAL  - 

дока

В вот самой енв


# In all environments, the following files are loaded if they exist,
# the later taking precedence over the former:
#
#  * .env                contains default values for the environment variables needed by the app
#  * .env.local          uncommitted file with local overrides
#  * .env.$APP_ENV       committed environment-specific defaults
#  * .env.$APP_ENV.local uncommitted environment-specific overrides
#
# Real environment variables win over .env files.
#
# DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES.
#
# Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2).
# https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration



1 .env            
2 .env.local          
3 .env.prod       
4 .env.prod.local

И когда ENV_PROCESSSOR про хотися по всем(можно )

что что ????

тем prod, dev, test - да хоть на ЕНВ= null или 'путин хуйло') когда Докер ЕНЖИН получает иструкцию что делаем, какой в нас енжин, я на личном опыте помню коло 3 года наза что была какая - то дичь:

точкой входа в збоку был

имейдж смотрит что надо указывет инструкции, в нашем VENDOR Если их не переопределять - то они те что предоставляются от вендора. Вот packege доктри на требует 2 конкретных енвайремента: MARIADB_ALLOW_EMPTY_PASSWORD и это первый, что я переопределил MARIADB_ALLOW_EMPTY_PASSWORD: "no" 1й - нужен пароль или для суперюзера.

он прос если нет - то пароль —password=null а там дефолтный хост-порт- и имя юзер-рута=root

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

обнаружул:

Ну вот, я не засетил, MARIADB_ROOT_PASSWORD (засетил - set VARABLE=value) && MARIADB_DATABASE как показали логи. докеры - одинаковы. +-

Эсть такой прикол - очень скольский пол

    07:39:46 butvin@aser-ubuntu-dev ~
    ❯ docker compose version
    Docker Compose version v2.3.3`

    07:39:50 butvin@aser-ubuntu-dev ~
    ❯ docker-compose -v
    Docker Compose version v2.7.0`

    07:39:55 butvin@aser-ubuntu-dev ~
    ❯ docker --version
    Docker version 24.0.5, `build ced0996`

Есть Обобщенное понятия как ИНСТРКУЦИИ, что это такое в друх словах: с инструкции офф сайта:

Let’s suppose you want to build an image that requires a lot of commands to setup.
For example, a fairly common pattern inDockerfilesinvolves wanting to update the system, and then to install some additional dependencies, i.e. apt update, upgrade andinstall all at once.

docker-compose VS docker compose

The WORKDIR instruction sets the working directory for any RUN, CMD, ENTRYPOINT, COPY and ADD instructions that follow it in the Dockerfile.

If the WORKDIR doesn't exist, it will be created even if it's not used in any subsequent Dockerfile instruction.

The WORKDIR instruction can be used multiple times in a Dockerfile. If a relative path is provided, it will be relative to the path of the previous WORKDIR instruction. For example:

Это тулза проверяте на то что и какие енайресенты переопределыны,
а какие идут заводские (**И всем  до боли**). 
К примеру - имя суперпользователя - admin или root,
если в разрере конкретых: дефолтный порт БД - 3306,
апатча 8000:80 для 127.0.0.1 - `localhot`, но и 127.0.0.1:8017,
тоже имеют сслыку на локалхосту `localhot`. 

#example-guestbook

#env

#environment-replacement

#opensource


INFO

Conclusion

  1. [Dockefile]https://github.com/butvin/galera/blob/master/.dockerignore#L2

.dockerignore не просто нужен, а КРИТИЧЕСКИ НЕОБХОДИМ! он при билде image, нашего приложения или любого другого, где юзается Dockerfile не только