Я видел такой ответ: Перезаписать файлы с помощью `docker run`
Я пытаюсь перезаписать файл test.txt
, встроенный в образ, одним файлом на моем локальная файловая система.
Вот код, который я запускаю. В изображение скопирован файл test.txt с надписью This is the original file.
.
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
namespace ContainerTest
{
class Program
{
static void Main(string[] args)
{
EnumerateDirectory();
DisplayTestFile();
}
static void EnumerateDirectory()
{
Console.WriteLine("Enumerating directory:");
IEnumerable<string> files = Directory.EnumerateFiles("./");
foreach (string curr in files)
{
Console.WriteLine(" " + curr);
}
}
static void DisplayTestFile()
{
Console.WriteLine("Reading test.txt: ");
byte[] data = File.ReadAllBytes("./test.txt");
Console.WriteLine(Encoding.UTF8.GetString(data));
}
}
}
Файл test2.txt
в моей файловой системе говорит: This is the modified file!
.
Я использую Dockerfile
:
# Use SDK
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
# Set the local working directory, copy in the project file, and perform a restore
WORKDIR /app
COPY *.csproj .
RUN dotnet restore
# Copy everything else and build
COPY . ./
RUN ls -la
RUN dotnet build -f netcoreapp3.1 -c Release
RUN dotnet publish -f netcoreapp3.1 -c Release -o out
# Build runtime image
FROM mcr.microsoft.com/dotnet/core/runtime:3.1
WORKDIR /app
COPY --from=build /app/out .
# Set the entrypoint for the container
ENTRYPOINT ["dotnet", "ContainerTest.dll"]
Я создание образа с использованием следующего кода, который строится без ошибок:
docker build -t containertest -f Dockerfile .
Я запускаю образ, пытаясь заменить исходный test.txt
, используя:
docker run -v test.txt:/[path]/test2.txt containertest
Однако, когда Я запускаю изображение с помощью этой команды, я все еще вижу, что используется исходный файл test.txt
, т.е. он отображает This is the original file.
Есть идеи, что я делаю неправильно? Я знаю, что есть альтернативные решения (docker -compose, et c), но я специально ищу, чтобы решить эту проблему, используя docker run -v
.
Я даже пытался создать изображение, исключая test.txt
файл, а затем монтируя его в образ, используя -v
, и он не работает.
Спасибо!