#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 указано, что этот параметр является переменной среды, поэтому это может помочь.