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 должен быть именем службы для подключения из другого контейнера к БД.

Другие вопросы по тегам