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`.
INFO
Conclusion
.dockerignore не просто нужен, а КРИТИЧЕСКИ НЕОБХОДИМ! он при билде image, нашего приложения или любого другого, где юзается Dockerfile не только