Как добавить docker run param в docker compose file? - PullRequest
0 голосов
/ 29 марта 2020

Я могу запустить свое приложение с помощью следующей команды:

docker run --rm -p 4000:4000 myapp:latest python3.8 -m pipenv run flask run -h 0.0.0.0

Я пытаюсь написать docker -композитный файл, чтобы я мог вызвать приложение, используя

docker-compose up. Это не работает. Как «добавить» параметры запуска docker в файл docker -compose?

version: '3'

services:
  web:
    build: .
    ports:
      - "4000:4000"
    volumes:
      - .:/code

Ответы [ 2 ]

3 голосов
/ 29 марта 2020

Вам нужно использовать command, чтобы указать это.

version: '3'
services:
    web:
        build: .
        ports:
            - '4000: 4000'
        image: myapp:latest
        command: 'python3.8 -m pipenv run flask run -h 0.0.0.0'
        volumes:
          - .:/code
0 голосов
/ 29 марта 2020

Вы должны использовать CMD в вашем Dockerfile, чтобы указать это. Поскольку вам нужно указывать это каждый раз, когда вы запускаете контейнер на основе изображения, нет необходимости указывать его вручную при запуске образа.

CMD python3.8 -m pipenv run flask run -h 0.0.0.0

В контексте Docker контейнер, типично устанавливать пакеты в «систему» ​​Python: он уже изолирован от хоста Python благодаря тому, что находится в контейнере Docker, и настройка для использования виртуальной среды немного сложна , Это избавляет от необходимости запускать pipenv run.

FROM python:3.8
WORKDIR /code
COPY Pipfile Pipfile.lock .
RUN pipenv install --deploy --system
COPY . .
CMD flask run -h 0.0.0.0

Так как каталог /code уже находится в вашем образе, вы можете на самом деле сделать docker-compose.yml короче, удалив ненужное крепление для привязки

version: '3'
services:
  web:
    build: .
    ports:
      - "4000:4000"
    # no volumes:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...