postgres не запускается при установке docker mastodon
Я пытаюсь установить dockerized версию mastodon, и хотя я ссылался на несколько руководств (включая официальную документацию), я постоянно получаю сообщение об ошибке при подключении к базе данных postgres.
Вот соответствующий раздел моего docker-compose.yml:
db:
restart: always
image: postgres:9.6-alpine
shm_size: 256mb
networks:
- internal_network
healthcheck:
test: ["CMD", "pg_isready", "-U", "postgres"]
volumes:
- ./postgres:/var/lib/postgresql/data
... и мой.env.production:
# PostgreSQL
# ----------
DB_HOST=/var/run/postgresql
DB_USER=mastodon
DB_NAME=mastodon_production
DB_PASS=[MY PASSWORD] <--- (I've also tried leaving this blank with no difference in the result)
DB_PORT=5432
Но когда я бегу (например):$ docker-compose run --rm web rails db:migrate
Получаю следующий результат:
rails aborted!
PG::ConnectionBad: 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"?
а также $ docker logs mastodon_db_1
дает мне:
Error: Database is uninitialized and superuser password is not specified.
You must specify POSTGRES_PASSWORD to a non-empty value for the
superuser. For example, "-e POSTGRES_PASSWORD=password" on "docker run".
You may also use "POSTGRES_HOST_AUTH_METHOD=trust" to allow all
connections without a password. This is *not* recommended.
See PostgreSQL documentation about "trust":
https://www.postgresql.org/docs/current/auth-trust.html
Я относительно новичок в докере, но (думаю) я понимаю основные концепции. Тем не менее, многие поиски в Google заставляют меня думать, что я единственный, у кого есть эта проблема, и я не вижу, что мне не хватает.
1 ответ
Вторая ошибка связана с отсутствием ENV, необходимого для контейнера Postgres.
Error: Database is uninitialized and superuser password is not specified.
You must specify POSTGRES_PASSWORD to a non-empty value for the
superuser
POSTGRES_PASSWORD
Эта переменная среды необходима для использования образа PostgreSQL. Он не должен быть пустым или неопределенным. Эта переменная среды устанавливает пароль суперпользователя для PostgreSQL. Суперпользователь по умолчанию определяется
POSTGRES_USER
переменная окружения
Вам необходимо указать POSTGRES_PASSWORD
ENV
db:
image: postgres
restart: always
environment:
POSTGRES_PASSWORD: example
POSTGRES_DB: mastodon_production
POSTGRES_USER: mastodon
postgres-docker-Environment переменные
В то время как вторая ошибка кажется, что хост недействителен или вы неправильно используете переменную среды.
PG::ConnectionBad: could not connect to server: No such file or directory
измените файл точечного env на
DB_HOST=db
DB_USER=mastodon
DB_NAME=mastodon_production
DB_PASS=example <--- (the one which is set in DB)
DB_PORT=5432
DB_HOST должен быть именем службы для подключения из другого контейнера к БД.