Как мне SSH из контейнера Docker на удаленный сервер

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
0
задан dade 14 April 2019 в 10:19
поделиться

1 ответ

Как правило Вы не делаете вещей этот путь. Типичные изображения Докера содержат только сервер, который они выполняют и некоторые базовые инструменты, но сетевые клиенты как ssh или curl обычно не являются частью этого. В особом случае ssh, надежно управляя требуемыми учетными данными также хитро (не невозможный, но не очевидный).

В Вашем особом случае, я мог бы перестроить вещи так, чтобы Ваши сценарии не имели трудного предположения, которое база данных выполняла локально. Настройте пустой контейнер базы данных, затем выполните свой сценарий от хоста предназначение что пустая база данных. Это может даже работать для установки PGHOST и PGPORT переменные среды для указания на имя хоста хост-машины и порт, Вы публикуете интерфейс БД на и затем выполняете тот неизмененный сценарий.

Рассмотрение ближе, что определенная команда, также можно найти, что он лучше настраивает задание крона, чтобы выполнить тот определенный дамп базы данных и поместить содержание где-нибудь. Тогда разработчик может получить снимок данных, не имея необходимость устанавливать связь с живым сервером базы данных, и можно ограничить число людей, у которых будет доступ. Как только у Вас есть этот файл дампа, можно использовать /docker-entrypoint-initdb.d механизм, чтобы заставить его быть загруженным в первый раз запуска.

0
ответ дан David Maze 15 April 2019 в 00:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: