Инструменты пользователя

Инструменты сайта


linux:containers

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
linux:containers [2025/01/25 07:24]
admin
linux:containers [2025/04/16 06:53] (текущий)
admin [Volumes]
Строка 435: Строка 435:
  
  
 +==== Volumes ====
 +Инструкция "VOLUME" в Dockerfile при сборке, похоже просто создает новый волюм во время сборки, плюс обязывает созданный контейнер постоянно монтировать его при запуске\\
  
 +<code bash>
 +podman volume create <vol_name>
 +podman volume ls / inspect <vol_name> / rm <vol_name>
  
-===== Docker-compose =====+# Создание контейнера с примонтированным волюмом (можно не запускать) 
 +podman container create --name <container_name> -v <vol_name>:/inside_folder <image_name>
  
 +# Копируем из хоста файлы в волюм, через контейнер
 +podman cp <host_dir>/ <container_name>:/<inside_folder>
 +
 +# Теперь в волюме есть нужные данные, персистентно и им можно пользоваться в других контейнерах
 +podman run -it -v <vol_name>:/inside_folder <image_name>
 +</code>
 +
 +
 +Монтирование папки с хоста в контейнер\\
 +Только права на нее назначаются рутовые\\
 +<code bash>
 +podman run -d -v /path/host_dir:/container_dir <image_name>
 +podman run -d --mount src=/path/host_dir,target=/container_dir,type=bind <image_name>
 +
 +# В Compose
 +services:
 +  my_app:
 +    image: my_app
 +    container_name: my_app
 +    volumes:
 +      - type: bind
 +        source: /path/host_dir
 +        target: /container_dir
 +
 +</code>
 +
 +
 +
 +
 +
 +
 +===== Docker-compose =====
 Указание версии в файле либо впринципе устарело либо приобрело новый формат - [[https://docs.docker.com/reference/compose-file/]]\\ Указание версии в файле либо впринципе устарело либо приобрело новый формат - [[https://docs.docker.com/reference/compose-file/]]\\
 +[[https://docs.docker.com/reference/compose-file|Docs]]\\
  
 Оркестрация несколькими контейнерами\\ Оркестрация несколькими контейнерами\\
Строка 659: Строка 698:
  
 ==== Порядок запуска ==== ==== Порядок запуска ====
 +В итоге хз, порядок запуска есть, но только запуск контейнера, сделать ожидание инициализации так и не удалось\\
  
 <details> <details>
 <summary>:!: depends_on</summary> <summary>:!: depends_on</summary>
- 
 **condition: service_started**\\ **condition: service_started**\\
 Такой порядок запуска работает но учитывается только старт контейнера а не сервиса внутри него\\ Такой порядок запуска работает но учитывается только старт контейнера а не сервиса внутри него\\
Строка 776: Строка 814:
       - "./script/:/deployments/"       - "./script/:/deployments/"
 </code> </code>
 +</details>
  
  
-<code yaml>+ 
 +==== PostgreSQL ==== 
 +:!: Примонтировав папку со скриптами в **"/docker-entrypoint-initdb.d"** внутри контейнера, можно выполнять любой функционал с БД внутри контейнера, после инициализации сервера\\ 
 + 
 + 
 +<details> 
 +<summary>:!: Общий пример</summary> 
 +Капец, каждую версию управляющие переменные окружения меняются\\ 
 +В 15ой обязательная переменная **POSTGRES_PASSWORD**, для создания БД - **POSTGRES_DB**\\ 
 +В 17ой все другое\\ 
 +<code bash> 
 +services: 
 +  post-db: 
 +    image: "postgres:15-alpine3.20" 
 +#    env_file: .env 
 +    environment: 
 +      POSTGRES_DB: 'my_db' 
 +      POSTGRES_PASSWORD: 'postgres1' 
 +    ports: 
 +      - "5432:5432"
 </code> </code>
 </details> </details>
  
  
 +
 +<details>
 +<summary>:!: МультиБД</summary>
 +[[https://github.com/mrts/docker-postgresql-multiple-databases|Src]]\\
 +Монтируем скрипт в директорию **/docker-entrypoint-initdb.d** внутри контейнера, он создает несколько БД\\
 +
 +<code bash>
 +services:
 +  sarm-db:
 +    image: "postgres:15-alpine3.20"
 +#    env_file: .env
 +    environment:
 +#      POSTGRES_DB: "my_db"
 +      POSTGRES_PASSWORD: "ppp"
 +      POSTGRES_MULTIPLE_DATABASES: my_db1,my_db2
 +    volumes:
 + - ./extended_scripts:/docker-entrypoint-initdb.d
 +    ports:
 +      - "5432:5432"
 +</code>
 +</details>
 +
 +
 +
 +<details>
 +<summary>:!:  </summary>
 +
 +<code bash>
 +</code>
 +</details>
 +
 +
 +
 +
 +
 +==== Разное ====
 +
 +<details>
 +<summary>:!: Command</summary>
 +Похоже не переопределяет команду запуска контейнера или какие то нюансы есть\\
 +Команду нужно писать либо одну либо **bash -c 'first && second'**
 +
 +<code bash>
 +</code>
 +</details>
  
  
linux/containers.1737789872.txt.gz · Последнее изменение: 2025/01/25 07:24 — admin