В чем разница между командами `COPY` и` ADD` в Dockerfile?

Вы затеняете метод. Например:

struct base
{
    void method(int);
    void method(float);
};

struct derived : base
{
    void method(int);
    // base::method(int) is not visible.
    // base::method(float) is not visible.
};

Вы можете исправить это с помощью директивы using:

class derived : public base
{
    using base::method; // bring all of them in.

    void method(int);
    // base::method(int) is not visible.
    // base::method(float) is visible.
};

Поскольку вы, похоже, настаиваете на количестве параметров, я буду адрес. Это ничего не меняет. Наблюдать:

struct base
{
    void method(int){}
};

struct derived : base
{
    void method(int,int){}
    // method(int) is not visible.
};

struct derived_fixed : base
{
    using base::method;
    void method(int,int){}
};

int main(void)
{
    {
        derived d;

        d.method(1, 2); // will compile
        d.method(3); // will NOT compile
    }
    {
        derived_fixed d;

        d.method(1, 2); // will compile
        d.method(3); // will compile
    }
}

Будет [shadow] еще затеняться независимо от параметров или возвращаемых типов; это просто имя , которое тени. using base::<x>; приведет все методы base '<x> "к видимости.

1866
задан Shubham 26 November 2018 в 16:44
поделиться

1 ответ

Так как Докер 17.05 COPY используется с эти --from флаг в многоступенчатые сборки для копирования артефактов от предыдущих этапов сборки до текущего этапа сборки.

от документация

Дополнительно КОПИЯ принимает флаг --from=<name|index>, который может использоваться для установки исходного местоположения на предыдущий этап сборки (созданный с ОТ.. AS), который будет использоваться вместо контекста сборки, отправленного пользователем.

1
ответ дан 22 November 2019 в 20:02
поделиться