MacOS: Как смонтировать тома, используя docker -compose.yml и Dockerfile? - PullRequest
0 голосов
/ 05 апреля 2020

Структура папок моего проекта выглядит следующим образом:

+ cython_test/
    + ny/
        + nyc/
            + docker-compose.yml
            + Dockerfile
            + pigeon.py
            + data/
                + temps.txt

docker-compose.yml:

version: '2.1'
services:
  worker:
    build: .  
    volumes: 
      - ./:/opt

Dockerfile:

FROM python:3.6-alpine3.10

RUN sleep 5000

Чтобы получить Контейнер запущен, я делаю:

docker-compose -f "ny/nyc/docker-compose.yml" up -d --build

И я получаю вывод:

Alexs-MacBook-Pro:cython_test alexvissup$ cd "/Users/alexvissup/Codes/cython_test"
Alexs-MacBook-Pro:cython_test alexvissup$ docker-compose -f "ny/nyc/docker-compose.yml" up -d --build
Creating network "nyc_default" with the default driver
Building worker
Step 1/2 : FROM python:3.6-alpine3.10
 ---> 92a867c54c0f
Step 2/2 : RUN sleep 5000
 ---> Running in fdeb933e6cfc

Когда я exec в контейнер, я ожидаю go в /opt и вижу все внутри моей локальной папки nyc, но оно пустое.

Мне необходимо указать volumes в docker-compose.yml. Это возможно? Что я делаю не так?

1 Ответ

0 голосов
/ 05 апреля 2020

Docker том будет создан при создании контейнеров, а не во время сборки. Ваш docker файл долгое время ожидает команду сна, поэтому docker -compose не создает контейнер до тех пор, пока функция сна полностью не завершит sh. (Я не понимаю, зачем вам вообще нужен сон, это не обычное явление в мире Docker)

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

Вы можете попробовать использовать приведенную ниже команду для решения проблемы (вам может понадобиться установить python зависимости также)

FROM python:3.6-alpine3.10
# RUN pip install flask -- if you need to have some dependencies
WORKDIR /opt
ENTRYPOINT ["python", "pigeon.py"]
...