Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
linux:containers [2025/01/25 04:53] admin |
linux:containers [2025/04/16 06:53] (текущий) admin [Volumes] |
||
---|---|---|---|
Строка 433: | Строка 433: | ||
При повторном создании образа (через Dockerfile), | При повторном создании образа (через Dockerfile), | ||
+ | |||
+ | |||
+ | ==== Volumes ==== | ||
+ | Инструкция " | ||
+ | |||
+ | <code bash> | ||
+ | podman volume create < | ||
+ | podman volume ls / inspect < | ||
+ | |||
+ | # Создание контейнера с примонтированным волюмом (можно не запускать) | ||
+ | podman container create --name < | ||
+ | |||
+ | # Копируем из хоста файлы в волюм, через контейнер | ||
+ | podman cp < | ||
+ | |||
+ | # Теперь в волюме есть нужные данные, | ||
+ | podman run -it -v < | ||
+ | </ | ||
+ | |||
+ | |||
+ | Монтирование папки с хоста в контейнер\\ | ||
+ | Только права на нее назначаются рутовые\\ | ||
+ | <code bash> | ||
+ | podman run -d -v / | ||
+ | podman run -d --mount src=/ | ||
+ | |||
+ | # В Compose | ||
+ | services: | ||
+ | my_app: | ||
+ | image: my_app | ||
+ | container_name: | ||
+ | volumes: | ||
+ | - type: bind | ||
+ | source: / | ||
+ | target: / | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
Строка 438: | Строка 477: | ||
===== Docker-compose ===== | ===== Docker-compose ===== | ||
+ | Указание версии в файле либо впринципе устарело либо приобрело новый формат - [[https:// | ||
+ | [[https:// | ||
+ | |||
Оркестрация несколькими контейнерами\\ | Оркестрация несколькими контейнерами\\ | ||
<code bash> | <code bash> | ||
Строка 459: | Строка 501: | ||
< | < | ||
< | < | ||
- | |||
Приложение загружается с собственного registry, перед этим нужно выполнить " | Приложение загружается с собственного registry, перед этим нужно выполнить " | ||
Контейнеры объединяются в общую сеть\\ | Контейнеры объединяются в общую сеть\\ | ||
Строка 560: | Строка 601: | ||
* KAFKA_ADVERTISED_LISTENERS - адреса для клиентов, | * KAFKA_ADVERTISED_LISTENERS - адреса для клиентов, | ||
* режим для межброкерного взаимодействия задается в " | * режим для межброкерного взаимодействия задается в " | ||
- | |||
</ | </ | ||
Строка 658: | Строка 698: | ||
==== Порядок запуска ==== | ==== Порядок запуска ==== | ||
+ | В итоге хз, порядок запуска есть, но только запуск контейнера, | ||
< | < | ||
< | < | ||
- | |||
**condition: | **condition: | ||
Такой порядок запуска работает но учитывается только старт контейнера а не сервиса внутри него\\ | Такой порядок запуска работает но учитывается только старт контейнера а не сервиса внутри него\\ | ||
+ | Порядок 321 | ||
<code yaml> | <code yaml> | ||
version: ' | version: ' | ||
services: | services: | ||
+ | srv1: | ||
+ | image: " | ||
+ | command: "echo 'this first'" | ||
+ | depends_on: | ||
+ | srv2: | ||
+ | condition: service_started | ||
+ | |||
srv2: | srv2: | ||
image: " | image: " | ||
Строка 685: | Строка 732: | ||
Кейс: три контейнера запустились сразу, подряд, | Кейс: три контейнера запустились сразу, подряд, | ||
На порядок все же влияет, | На порядок все же влияет, | ||
+ | |||
+ | аа, это короче от обратного: | ||
+ | указывается какой сервис должен быть запущен до этого\\ | ||
+ | или хз, можно юзать так же как и предыдущий ? тут тоже 321 порядок\\ | ||
+ | |||
+ | Но завершения контейнера точно не ждет\\ | ||
<code yaml> | <code yaml> | ||
version: ' | version: ' | ||
Строка 695: | Строка 748: | ||
condition: service_completed_successfully | condition: service_completed_successfully | ||
volumes: | volumes: | ||
- | - "./entry.sh/:/ | + | - "./script/:/ |
srv2: | srv2: | ||
Строка 702: | Строка 755: | ||
depends_on: | depends_on: | ||
srv3: | srv3: | ||
- | condition: | + | condition: |
volumes: | volumes: | ||
- | - "./entry.sh/:/ | + | - "./script/:/ |
srv3: | srv3: | ||
- | image: "ubi8/openjdk-17: | + | image: " |
command: "/ | command: "/ | ||
volumes: | volumes: | ||
- | - "./entry.sh/:/ | + | - "./script/:/ |
</ | </ | ||
+ | |||
+ | Еще вариации: | ||
+ | Второй контейнер завершается с err-code и проверка проходит с err-code\\ | ||
+ | Но первый сервис все равно стартанул, | ||
+ | Да, на порядок влияет и влияет хелс-чек, | ||
+ | Да, если зависимость убрать то в обычном порядке стартует, | ||
<code yaml> | <code yaml> | ||
+ | version: ' | ||
+ | services: | ||
+ | srv1: | ||
+ | image: " | ||
+ | command: "/ | ||
+ | healthcheck: | ||
+ | test: [" | ||
+ | interval: 15s | ||
+ | timeout: 10s | ||
+ | retries: 10 | ||
+ | depends_on: | ||
+ | srv2: | ||
+ | condition: | ||
+ | - service_healthy | ||
+ | - service_completed_successfully | ||
+ | volumes: | ||
+ | - " | ||
+ | |||
+ | srv2: | ||
+ | image: " | ||
+ | command: "/ | ||
+ | healthcheck: | ||
+ | test: [" | ||
+ | interval: 15s | ||
+ | timeout: 10s | ||
+ | retries: 10 | ||
+ | volumes: | ||
+ | - " | ||
+ | |||
+ | srv3: | ||
+ | image: " | ||
+ | command: "/ | ||
+ | healthcheck: | ||
+ | test: [" | ||
+ | interval: 15s | ||
+ | timeout: 10s | ||
+ | retries: 10 | ||
+ | volumes: | ||
+ | - " | ||
</ | </ | ||
+ | </ | ||
- | < | + | |
+ | ==== PostgreSQL ==== | ||
+ | :!: Примонтировав папку со скриптами в **"/ | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | Капец, каждую версию управляющие переменные окружения меняются\\ | ||
+ | В 15ой обязательная переменная **POSTGRES_PASSWORD**, | ||
+ | В 17ой все другое\\ | ||
+ | < | ||
+ | services: | ||
+ | post-db: | ||
+ | image: " | ||
+ | # env_file: .env | ||
+ | environment: | ||
+ | POSTGRES_DB: | ||
+ | POSTGRES_PASSWORD: | ||
+ | ports: | ||
+ | - " | ||
</ | </ | ||
</ | </ | ||
+ | |||
+ | < | ||
+ | < | ||
+ | [[https:// | ||
+ | Монтируем скрипт в директорию **/ | ||
+ | |||
+ | <code bash> | ||
+ | services: | ||
+ | sarm-db: | ||
+ | image: " | ||
+ | # env_file: .env | ||
+ | environment: | ||
+ | # POSTGRES_DB: | ||
+ | POSTGRES_PASSWORD: | ||
+ | POSTGRES_MULTIPLE_DATABASES: | ||
+ | volumes: | ||
+ | - ./ | ||
+ | ports: | ||
+ | - " | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | |||
+ | <code bash> | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Разное ==== | ||
+ | |||
+ | < | ||
+ | < | ||
+ | Похоже не переопределяет команду запуска контейнера или какие то нюансы есть\\ | ||
+ | Команду нужно писать либо одну либо **bash -c 'first && second' | ||
+ | |||
+ | <code bash> | ||
+ | </ | ||
+ | </ | ||