У меня есть 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-файл и сохранить минимальный контекст сборки?