docker-compose.yml

docker Пример докеризации проекта SimpleMVC-example

В данной статье рассмотрим вариант добавления проекта SimpleMVC-example в docker-контейнер.
В сборке применены следующие технологии: PHP-FPM, Nginx, MySQL.
Папка docker расположена в корневой директории проекта и имеет следующую структуру:

swagger-ui docker compose Пример конфигурации

В блоке services:

swagger-ui:
  container_name: ktu-auth_swagger-ui
  ports:
    - 19736:8080
  image: swaggerapi/swagger-ui
  volumes:
    - ../docs/autogen:/schema
  environment:
    SWAGGER_JSON: /schema/openapi.yaml

-- здемь берем описание схемы из папки /docs, лежащей в поддиректории, родительской директории, содержающей директорию с docker-compose.yml

docker-compose Postgres пример docker-compose.yml

Например так:

version: "3.9"
services:
  postgres:
    image: "postgres:12.7"
    container_name: my-test-postgres
    ports:
     - "29132:5432"
    environment:
      POSTGRES_PASSWORD: 1234
      POSTGRES_USER: devuser
      POSTGRES_DB: devdb

-- после такой настроки для пользователя devuser в постгре будет включена авторизация по паролю (именно для него) и получится избежать ошибки вида:

password authentication failed for user

docker compose container name Как задать собственное имя контейнера (без генерации с цифрами)

Используйте опцию container_name, например:

version: '3'
services:
  web:
    build: ./
    container_name: my-container-name
    ports:
      - 9001:80
    volumes:
      - '../:/var/www/html/site'

Официальная документация: https://docs.docker.com/compose/compose-...

docker linux host IP хоста (Основной операционной системы), как обращаться к службам "снаружи"

Используем сеть по умолчанию (минимализм)

Cпециальное внутреннее доменное имя host.docker.internal что обращаться к основной системе (хосту) из контейра (гостевой системы) не работает в Linux (как минимум в docker 19)

Явное указание IP

Более сложный способ: можно сконфигурировать подсеть для контейнеров приложения, явно указав диапазон адресов подсети, сделать это можно так:

docker Запросы выполняются медленнее чем без докера

Проблема

После переезда в докер запросы стали выполняться очень долго (минимум по 3 секунды лишних на каждый вопрос). При этом докер запускался в ubuntu linux, где накладные расходны на сам докер должны быть минимальными.

Что оказалось

Оказалось, что проблема была в том, что в сборке использовалась конфигурация xdebug (в конфиге ниже это файл config/php/xdebug.ini) в которой было включен автозапуск (xdebug.remote_autostart=1), чтобы исправить ситуацию переключили на 0:

docker ERROR: for web Cannot start service web: OCI runtime create failed: Ошибка (bind file directory)

Проблема возникает, если вы пытаетесь примонтировать файл к папке (можно только файл к файлу или папку к папке), проверьте:

  1. свой docker-compose.yml
  2. файлы и папке на локальном диске (действительно ли это то, что вы подразумеваете)

вот такое должно работать нормально:

ERROR: Version in "./docker-compose.yml" is unsupported Ошибка

docker-compose up
ERROR: Version in "./docker-compose.yml" is unsupported. You might be seeing this error because you're using the wrong Compose file version. Either specify a version of "2" (or "2.0") and place your service definitions under the `services` key, or omit the `version` key and place your service definitions at the root of the file to use version 1.
For more on the Compose file format versions, see https://docs.docker.com/compose/compose-...

Subscribe to RSS - docker-compose.yml