Расширение образа postgres с помощью dockerfile с POSTGRES_PASSWORD

#postgresql #docker #dockerfile

#postgresql #docker #dockerfile

Вопрос:

Я расширяю образ postgres с аргументом POSTGRES_PASSWORD=postgres, чтобы у моего производного контейнера уже был пароль по умолчанию, используя сборку docker с помощью dockerfile.

Всякий раз, когда я запускал psql -U postgres контейнер из производного изображения, которое я создал из postgres, я получаю:

 could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

 

В моем DockerFile у меня есть:

 ARG POSTGRES_PASSWORD=postgres
FROM postgres:alpine

RUN apk add --update nodejs
RUN apk add --update npm
RUN apk add --update erlang
RUN apk add --update elixir

CMD ["/bin/bash"]
 

затем я побежал

 docker build -t myImage .
docker run --name sample -d -it myImage
docker exec -it sample bash
 

Я хочу запустить psql -U postgres sample контейнер (изображение, расширенное из postgres).

Комментарии:

1. Похоже, вы ищете систему оркестровки, такую как Docker Compose, больше, чем пытаетесь исправить эти вещи в Dockerfile. CMD Настройка для запуска оболочки вместо запуска базы данных будет непосредственной причиной вашей ошибки.

2. @DavidMaze Создание образа с помощью elixir и запуска postgres невозможно? Должен ли я использовать docker compose для соединения образа postgres и образа elixir?

3. Да, вы должны обязательно запускать свою базу данных и приложения в отдельных контейнерах.

Ответ №1:

Попробуйте заменить ARG POSTGRES_PASSWORD=postgres на ENV POSTGRES_PASSWORD postgres

В документации postgres docker image указано, что этот параметр является переменной среды, поэтому это может помочь.