когда доступен docker том с помощью docker compose? - PullRequest
0 голосов
/ 10 января 2020

Я относительно новичок в Docker. У меня есть файл docker -compose.yml, который создает том. В одном из моих Dockerfiles я проверяю, создан ли том, перечисляя содержимое тома. Я получаю сообщение о том, что тома не существует. Когда том становится доступным при использовании docker compose?

Вот мой docker -compse.yml:

version: "3.7"
services:
  app-api:
    image: api-dev
    container_name: api
    build:
      context: .
      dockerfile: ./app-api/Dockerfile.dev
    ports:
      - "5000:5000"
    volumes:
      - ../library:/app/library
    environment:
      ASPNETCORE_ENVIRONMENT: Development

Мне также нужно иметь доступный том при создании моего контейнера, потому что я использую его в своей команде do tnet restore.

Вот мой Dockerfile:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS api-env

#list volume contents
RUN ls -al /app/library

WORKDIR /app/app-api

COPY ./app-api/*.csproj .

#need to have volume created before this command
RUN dotnet restore --source https://api.nuget.org/v3/index.json --source /app/library

#copies all files into current directory
COPY ./app-api/. .
RUN dotnet run Api.csproj
EXPOSE 5000
RUN echo "'dotnet running'"

Я подумал, добавив -volumes: .... в docker -compose.yml, он автоматически создаст том. Мне все еще нужно добавить команду создания тома в мой Dockerfile?

1 Ответ

1 голос
/ 10 января 2020

TL; DR:

  • Команды, которые вы вводите в RUN, выполняются до монтирования томов.
  • CMD будет выполняться после монтирование томов.

Более длинный ответ

Файл Docker используется при построении образа контейнера. Затем изображение будет использоваться в файле docker-compose.yml для запуска контейнера, к которому будет подключен том. Команда RUN, которую вы выполняете, выполняется при построении образа, поэтому у него не будет доступа к тому.

Обычно вы запускаете набор команд RUN, которые подготавливают изображение контейнера. Наконец, вы должны определить команду CMD, которая будет указывать, какую программу следует запускать при запуске контейнера, на основе этого образа.

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