Перезапись файлов с -v в docker запуск не работает - PullRequest
0 голосов
/ 16 июня 2020

Я видел такой ответ: Перезаписать файлы с помощью `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, и он не работает.

Спасибо!

1 Ответ

0 голосов
/ 16 июня 2020

Я разобрался.

Первый параметр после -v - это локальный файл (вне контейнера).

Второй параметр - это путь к файлу в изображении.

In В моем случае мне пришлось использовать -v /[localpath]/test.txt:/app/test.txt, и это сработало.

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