как уменьшить контекст сборки - PullRequest
0 голосов
/ 22 января 2019

У меня есть dockerfile, в котором 7-килобайтный файл базы данных SQL Server копируется с хоста. Это увеличивает контекст сборки. Если bak-файл игнорируется в .dockeringore, COPY завершается ошибкой, как и ожидалось. Как мне справиться с этим, не увеличивая контекст сборки?

Структура моей папки

C:\proj
    artifacts (contains sql bak file)
    docker (contains dockerfile)
    scripts (contains powershell script for restoring db)
PS C:\proj> docker image build -t testdb:v14 -f .\docker\wcp_db.dockerfile .

Здесь контекст сборки включает в себя bak-файл, а размер изображения увеличивается.

Sending build context to Docker daemon  7.196GB

Если я добавлю .gitignore, чтобы пропустить папку артефактов или пропустить bak-файл, контекст сборки будет уменьшен.

Sending build context to Docker daemon  11.26kB

Однако COPY завершается неудачно, как и ожидалось, поскольку .gitignore игнорирует папку / файл из контекста.

Step 5/6 : COPY ./artifacts/testDB.bak .
COPY failed: CreateFile \\?\C:\ProgramData\Docker\tmp\docker-builder101517566\artifacts\testDB.bak: The system cannot find the file specified.

Я считаю, что мы не можем скопировать файл, который находится вне контекста сборки.

Мой докер-файл находится ниже:

#escape = `
FROM microsoft/mssql-server-windows-express:latest

ENV ACCEPT_EULA="Y" `
    sa_password="someSApwd012#"

WORKDIR C:\workspace

COPY ./scripts/DeployDatabase.ps1 .

COPY ./artifacts/testDB.bak .

CMD powershell ./DeployDatabase.ps1 -sa_password $env:sa_password -dbName 'testDB' -serverName ".\sqlexpress" -sourceBackupFolder "C:\workspace" -Verbose

Как справиться с этой ситуацией, когда я все еще могу скопировать bak-файл и сохранить минимальный контекст сборки?

1 Ответ

0 голосов
/ 22 января 2019

Обычно фильтрация контекста сборки выполняется с помощью файла .Dockerignore.Если для образа требуется bak, он должен присутствовать в buildcontext AFAIK.

Один из способов преодоления этого - предоставить какой-либо способ загрузки bak-файла во время выполнения.В этом случае вам придется изменить CMD для запуска некоторого сценария, который сначала загружает файл, а затем запускает сценарий развертывания БД.

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

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