#docker #makefile #docker-compose
Вопрос:
У меня есть файл Makefile, вызывающий docker-compose для выполнения команд в контейнерах. Это выглядит так:
COMPOSE=docker-compose
PHP=$(COMPOSE) run --rm -u `id -u`:`id -g` -T php
.SILENT:
.PHONY: help
install-dependencies:
$(PHP) php composer config --global disable-tls true
$(PHP) php composer config --global secure-http false
$(PHP) curl -sS https://getcomposer.org/installer > composer-setup.php
$(PHP) php composer-setup.php
$(PHP) php -r "unlink('composer-setup.php');"
$(PHP) php composer.phar install --ignore-platform-reqs
Проблема в том, что для каждой строки запускается образ PHP-докера.
Можно ли было бы выполнить один и тот же список команд, используя только один docker-compose внутри файла Makefile?
Например, что-то вроде этого:
COMPOSE=docker-compose
PHP=$(COMPOSE) run --rm -u `id -u`:`id -g` -T php
.SILENT:
.PHONY: help
install-dependencies:
$(PHP) php composer config --global disable-tls true |
php composer config --global secure-http false |
curl -sS https://getcomposer.org/installer > composer-setup.php |
php composer-setup.php |
php -r "unlink('composer-setup.php');" |
php composer.phar install --ignore-platform-reqs
Спасибо!
Комментарии:
1. Похоже, вы хотите записать эти команды в файл Dockerfile, который можно
docker build
использовать для повторного использования. У Docker есть пример учебника по приложениям , в котором описан этот процесс.2. Нет, мне нужно запускать эти команды через файл Makefile, так как мне нужно иметь возможность вызывать их из оболочки. Приведенные команды являются лишь примером.