Я использую docker-compose
для создания настроенных изображений nginx
и php
, а затем я хотел бы push
его в DockeHub.
Я использую COMPOSE_PROJECT_NAME
в .env
файл для установки имени префикса изображения:
COMPOSE_PROJECT_NAME=myapp
и docker-compose.yml
выглядит примерно так:
version: '3'
services:
php-fpm:
build:
context: ./php-fpm
args:
.....
volumes:
.....
expose:
.....
nginx:
build:
context: ./nginx
args:
.....
volumes:
.....
port:
.....
Запуск docker-compose up -d
имена изображений:
myapp_nginx
myapp_php-fpm
имя контейнера:
myapp_nginx_1
myapp_php-fpm_1
Теперь для pu sh этих изображений в DocekeHub мне нужно изменить имя образа, добавив суффикс DockerHub «account»:
myaccount/myapp_nginx
myaccount/myapp_php-fpm
, чтобы решить эту проблему, я добавил опцию «изображение» в docker-compose.yml
:
version: '3'
services:
php-fpm:
build:
context: ./php-fpm
args:
.....
volumes:
.....
expose:
.....
image: myaccount/${COMPOSE_PROJECT_NAME}_php-fpm
nginx:
build:
context: ./nginx
args:
.....
volumes:
.....
port:
.....
image: myaccount/${COMPOSE_PROJECT_NAME}_nginx
теперь, при запуске docker-compose push
изображения отправляются в DockerHub.
Хорошо, мой вопрос:
1) есть ли способ вставить имя учетной записи DockerHub myaccout
в переменную COMPOSE_PROJECT_NAME
? Что-то вроде: COMPOSE_PROJECT_NAME=myaccount/myapp
для автоматического создания имени изображения, например: myaccount/myapp_nginx
и myaccount/myapp_php-fpm
?
2) есть ли переменная для получения «имени службы», чтобы получить имя nginx
или php-fpm
? Например, в файле docker-compose.yml
я мог бы установить: image: myaccount/${COMPOSE_PROJECT_NAME}_<service_name>
, тогда если я автоматически изменю «имя службы» с nginx
на nginx2
, изображение будет myaccount/myapp_nginx2
3) есть ли способ переименовать изображения, созданные с помощью docker-compose
, только для разрешения push
?
Спасибо