Как можно перевести набор команд CLI Docker в файл YAML для Docker Compose?

Как исправить ошибку "services.networks must be a mapping" после выполнения команды `docker compose up -d` в файле `docker-compose.yml`, который разворачивает Zabbix 7.0 с базой PostgreSQL и управлялкой pgAdmin?
  • 4 июля 2024 г. 6:52
Ответы на вопрос 2
1. Для перевода набора команд CLI Docker в файл YAML для Docker Compose необходимо создать новый файл docker-compose.yml и описать в нем сервисы, сети, тома и другие параметры, перенося из CLI команд в соответствующие секции.

2. Для исправления ошибки "services.networks must be a mapping" необходимо убедиться, что секция networks содержит только описания сетей в формате ключ-значение. Например:

```yaml
version: '3.7'

services:
  zabbix-server:
    image: zabbix:7.0
    networks:
      - frontend
      - backend

  postgres:
    image: postgres:latest
    networks:
      - backend

  pgadmin:
    image: dpage/pgadmin4
    networks:
      - frontend

networks:
  frontend:
  backend:
```

Здесь определены три сервиса: zabbix-server, postgres и pgadmin, каждый из которых привязан к соответствующей сети frontend и backend. После внесения изменений в файл docker-compose.yml необходимо повторно выполнить команду `docker compose up -d` для развертывания контейнеров.
ChatGPT, просто скопировал твой вопрос ему 

version: '3.7'

networks:
  zabbix-net:
    driver: bridge
    ipam:
      config:
        - subnet: 172.20.0.0/16
          ip_range: 172.20.240.0/20

services:
  postgres-server:
    image: postgres:latest
    container_name: postgres-server
    environment:
      POSTGRES_USER: "zabbix"
      POSTGRES_PASSWORD: "zabbix_pwd"
      POSTGRES_DB: "zabbix"
    networks:
      zabbix-net:
    restart: unless-stopped

  zabbix-snmptraps:
    image: zabbix/zabbix-snmptraps:alpine-7.0-latest
    container_name: zabbix-snmptraps
    volumes:
      - /zbx_instance/snmptraps:/var/lib/zabbix/snmptraps:rw
      - /var/lib/zabbix/mibs:/usr/share/snmp/mibs:ro
    networks:
      zabbix-net:
    ports:
      - "162:1162/udp"
    restart: unless-stopped

  zabbix-server-pgsql:
    image: zabbix/zabbix-server-pgsql:alpine-7.0-latest
    container_name: zabbix-server-pgsql
    environment:
      DB_SERVER_HOST: "postgres-server"
      POSTGRES_USER: "zabbix"
      POSTGRES_PASSWORD: "zabbix_pwd"
      POSTGRES_DB: "zabbix"
      ZBX_ENABLE_SNMP_TRAPS: "true"
    networks:
      zabbix-net:
    ports:
      - "10051:10051"
    volumes:
      - zabbix-snmptraps:/var/lib/zabbix/snmptraps:rw
    restart: unless-stopped

  zabbix-web-nginx-pgsql:
    image: zabbix/zabbix-web-nginx-pgsql:alpine-7.0-latest
    container_name: zabbix-web-nginx-pgsql
    environment:
      ZBX_SERVER_HOST: "zabbix-server-pgsql"
      DB_SERVER_HOST: "postgres-server"
      POSTGRES_USER: "zabbix"
      POSTGRES_PASSWORD: "zabbix_pwd"
      POSTGRES_DB: "zabbix"
    networks:
      zabbix-net:
    ports:
      - "443:8443"
      - "80:8080"
    volumes:
      - /etc/ssl/nginx:/etc/ssl/nginx:ro
    restart: unless-stopped

  pgadmin:
    image: dpage/pgadmin4
    container_name: pgadmin
    environment:
      PGADMIN_DEFAULT_EMAIL: "[email protected]"
      PGADMIN_DEFAULT_PASSWORD: "SuperSecret"
    networks:
      zabbix-net:
    ports:
      - "8083:80"
    restart: unless-stopped

volumes:
  zabbix-snmptraps:
Похожие вопросы