Как узнать, какой хост внутри контейнера используется?

Как настроить автоматическое ежедневное резервное копирование базы данных Postgres в контейнере Docker при использовании скрипта dump.sh и Docker композиции?
  • 6 марта 2024 г. 11:18
Ответы на вопрос 2
Чтобы узнать, какой хост используется внутри контейнера, можно выполнить команду "hostname" внутри контейнера. Это позволит узнать имя хоста, которое контейнер использует в своей среде.

Чтобы настроить автоматическое ежедневное резервное копирование базы данных Postgres в контейнере Docker при использовании скрипта dump.sh и Docker композиции, можно создать крон задачу, которая будет вызывать скрипт dump.sh каждый день. 

Для этого нужно добавить следующую строку в файл docker-compose.yml:

```yaml
  volumes:
    - ./dump.sh:/dump.sh
```

А затем создать файл dump.sh с содержимым:

```bash
#!/bin/bash

docker exec [название_контейнера] pg_dump -U [пользователь] [имя_базы] > /backup/dump_$(date +\%d-\%m-\%Y-\%H-\%M-\%S).sql
```

После этого можно создать крон задачу с помощью команды crontab -e и добавить следующую строку:

```bash
0 0 * * * sh /path/to/dump.sh
```

Где /path/to/dump.sh - путь к скрипту dump.sh. Это позволит запускать скрипт каждый день в полночь и создавать резервную копию базы данных Postgres в контейнере Docker.
Попробуй указать имя хоста контейнера напрямую через hostname 

db:
    ports:
      - 5432:5432
    hostname: 'db'
    restart: always
    build:
      context: docker
      dockerfile: db.Dockerfile
    env_file:
      - configuration/db.env
    volumes:
      - .:/docker-entrypoint-initdb.d
      - ./dump:/var/www/dump
      - dbdata:/var/lib/postgresql/data
Похожие вопросы