在构建docker-compose文件的过程中运行unittests后,在容器中创建的文件未显示在我的本地文件系统上。
我有以下Dockerfile:
# IDM.Test/Dockerfile
FROM microsoft/aspnetcore-build:2.0
WORKDIR /src
# Variables
ENV RESTORE_POLICY --no-restore
ENV IGNORE_WARNINGS -nowarn:msb3202,nu1503
# Restore
COPY IDM.sln ./
# Copying and restoring other projects...
COPY IDM.Test/IDM.Test.csproj IDM.Test/
RUN dotnet restore IDM.Test/IDM.Test.csproj $IGNORE_WARNINGS
# Copy
COPY . .
# Test
RUN dotnet test IDM.Test/IDM.Test.csproj -l "trx;LogFileName=test-results.xml"
RUN ls -alR
运行RUN ls -alR
时,我可以看到文件/src/IDM.Test/TestResults/test-results.xml
是在容器中生成的。到目前为止一切都很好。
我正在使用docker-compose -f docker-compose.test.yml build
开始构建。
docker-compose看起来像这样:
version: '3'
services:
idm.webapi:
image: idmwebapi
build:
context: .
dockerfile: IDM.Test/Dockerfile
volumes:
- ./IDM.Test/TestResults:/IDM.Test/TestResults/
我已在本地创建了文件夹IDM.Test/TestResults
,但在成功运行docker-compose build命令后没有显示任何内容。
任何线索?
答案 0 :(得分:0)
也许有了这个解释,我们可以解决它。让我说一些明显的事情,以避免混乱,一步一步。容器创建有两个步骤:
卷在第二步(容器创建)中创建,而您的命令dotnet test IDM.Test/IDM.Test.csproj -l "trx;LogFileName=test-results.xml"
正在第一个中执行(图像创建)。
如果您在容器内的相同路径中创建了一个文件夹 装入的卷,此新文件夹中的数据仅在本地可用 在容器内。
最后,我的建议可以通过以下几点恢复:
RUN mkdir /IDM.Test/TestResults/
。尝试使用此Dockerfile:
# IDM.Test/Dockerfile
FROM microsoft/aspnetcore-build:2.0
WORKDIR /src
# Variables
ENV RESTORE_POLICY --no-restore
ENV IGNORE_WARNINGS -nowarn:msb3202,nu1503
# Restore
COPY IDM.sln ./
# Copying and restoring other projects...
COPY IDM.Test/IDM.Test.csproj IDM.Test/
RUN dotnet restore IDM.Test/IDM.Test.csproj $IGNORE_WARNINGS
# Copy
COPY . .
# Test
CMD dotnet test IDM.Test/IDM.Test.csproj -l "trx;LogFileName=test-results.xml"
或者这个docker-compose: 版本:'3'
services:
idm.webapi:
image: idmwebapi
build:
context: .
dockerfile: IDM.Test/Dockerfile
volumes:
- ./IDM.Test/TestResults:/IDM.Test/TestResults/
command: >
dotnet test IDM.Test/IDM.Test.csproj -l "trx;LogFileName=test-results.xml"
创建容器后,您可以使用ls
生成的文件进行检查。