Docker-compose файл.
Docker-compose - инструмент для совместного запуска несколких контенеров. Основой для docker-compoes является yaml-файл с настройками. Удобство заключается в том, что единожды написанный docker-compose.yml можно легко перенести с устройства на устройство.
Установка
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
Третья строчка скрипта дает нам возможность использовать docker-compose от имени сисетмы, если этот команда не будет выполнена. команда docker-compose потребует указания полноценного пути расположения.
Пример использования docker-compose
Пример взят с docs.microsoft.com
version: "3.7"
services:
app:
image: node:12-alpine
#build: .
command: sh -c "yarn install && yarn run dev"
ports:
- 3000:3000
working_dir: /app
volumes:
- ./:/app
environment:
MYSQL_HOST: mysql
MYSQL_USER: root
MYSQL_PASSWORD: secret
MYSQL_DB: todos
networks:
app_net:
mysql:
image: mysql:5.7
volumes:
- todo-mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: todos
networks:
app_net:
volumes:
todo-mysql-data:
networks:
app_net:
driver: bridge
Ключевые слова используемые в docker-compose:
| Ключи | Применение |
|---|---|
| build | Указывает путь откуда брать Dockerfile для создания образа |
| args | Указание аргументов билда которые требуются во время создания образа |
| command | Переписывает CMD указанную в Dockerfile |
| devices | Мапирование физических устройств в рабочий контейнер |
| depends_on | Указание зависимости сервисов друг от друга. Зависимый сервис будет запускаться последний |
| dns | Указанный в ручуню DNS сервер |
| entrypoint | Переписывает ENTRYPOINT директиву из Dockerfile |
| env_file | Добавление переменных с помощью файла переменных окружения |
| environment | Явное указание переменных в контейнер |
| expose | Выставление портов контейнера, они будут доступны только linked сервисам, могут быть указаны только внутренние порты. |
| image | Указание образа, который будет взят для старта контейнера |
| links | Связывание контейнеров разных сервисах |
| logging | Настройки логирования для сервиса. |
| networks | Сеть к которой будет присоденен сервис |
| ports | Маирование портов из контейнера в хост систему |
| volumes | Мапирование |
| хост | системы |
| контенер |