Я пытаюсь запустить приложение python3 в док-контейнере, используя CentOS 7 в качестве базового образа. Поэтому, если я просто играю с ним в интерактивном режиме, я набираю scl enable rh-python36 bash
Это, очевидно, переключает мою стандартную среду python2 на среду python3.6, которую я установил ранее (в Dockerfile) Теперь, ранее в файле dockerfile, я запускаю следующее:
SHELL ["scl", "enable", "rh-python36"]
(и многие варианты этого)
Это позволяет мне выполнять все мои установки pip в этой среде python3. Однако, когда я на самом деле хочу запустить мой app.py с CMD, по умолчанию используется python2. Я пытался поиграть с ENTRYPOINT и вариациями CMD, но, похоже, я не могу сделать среду Python3 активной, когда контейнер наконец-то запустится. Как я могу заставить это работать правильно с python3?
Вот докер-файл:
FROM centos:7
RUN mkdir -p /usr/src/app && \
yum install -y centos-release-scl && \
yum install -y rh-python36 && \
yum install -y rh-python36-python-tkinter
SHELL ["scl", "enable", "rh-python36"]
WORKDIR /usr/src/app
COPY . .
WORKDIR /usr/src/app/codeBase
RUN pip install --no-cache-dir -r /usr/src/app/codeBase/requirements.txt
EXPOSE 9000
CMD ["python", "run.py"]
Я также пробовал решение с псевдонимом, но боюсь, что оно не меняет exe для Python для CMD: вот полностью работоспособная версия с той, которая все еще печатает python 2.7.5:
FROM centos:7
RUN mkdir -p /usr/src/app && \
yum install -y centos-release-scl && \
yum install -y rh-python36 && \
yum install -y rh-python36-python-tkinter
WORKDIR /usr/src/app
RUN alias python=$(find / -type f -name "python*" | grep "python3.6$")
CMD ["python", "-V"]
Похоже, что ничего не происходит в новой оболочке, созданной с помощью CMD