используя тот же Dockerfile для создания изображений с другой версией Python - PullRequest
0 голосов
/ 01 июня 2019

У меня есть сценарий Python, который я хотел бы запустить на 2 разных контейнерах с Python 2.7 и Python 3.6.

Я хочу использовать один и тот же файл Docker для создания 2 разных образов, с той разницей, чтоверсия Python (то есть один раз это FROM python:3.6, а другой FROM python:2.7, и сделать это через make-файл.

Makefile

.PHONY = all clean build run

all: build run

# DOCKER TASKS
# Build the container
build: ## Build the container for tests
        docker build -t myscript:python2.7 .
        docker build -t myscript:python3.6 .
run: ## Run container
        docker run myscript:python2.7
        docker run myscript:python3.6

У меня естьDockerfile для создания образа: Dockerfile

FROM python:3.6

WORKDIR /usr/local/bin
RUN pip install pytest
COPY myscript.py test_regex_script.py ./

CMD ["pytest", "test_regex_script.py"]

Поскольку это один и тот же файл Docker, это сложно, я подумал создать два разных файла Docker, каждый с разной версией Python (и всеостальное же), но было интересно, есть ли более элегантный способ сделать это.

спасибо

1 Ответ

0 голосов
/ 01 июня 2019

Вы можете использовать аргумент сборки для него.

Ваш Dockerfile должен выглядеть следующим образом:

ARG VERSION=3.6

FROM python:3.6

WORKDIR /usr/local/bin
RUN pip install pytest
COPY myscript.py test_regex_script.py ./

CMD ["pytest", "test_regex_script.py"]

Для сборки за 3,6:

docker build -t python-app:3.6 .

Для сборкидля 2.7:

docker build -t python-app:2.7 --build-arg VERSION=2.7 .

Обратите внимание, что версия 3.6 является версией по умолчанию, если вы ее не указали (ARG VERSION = 3.6).Вы также не можете назначить значение по умолчанию, в этом случае вы всегда должны передавать значение в аргументе сборки (--build-arg VERSION = ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...