Erro ao iniciar postgres

Eu tenho uma configuração no docker-compose.yml, que posso disponibilizar aqui, mas que pegue de outro projeto, algo parecido, mas que apenas alterei as configurações do banco. O problema é que ele não consegue conectar, ele dá erro no serviço do sistema operacional, que retorna apenas:

abr 04 08:30:44 aspire systemd[1]: Starting PostgreSQL database server...
abr 04 08:30:44 aspire postgres[122349]: cat: /var/lib/postgres/data/PG_VERSION: Permissão negada
abr 04 08:30:44 aspire postgres[122350]: cat: /var/lib/postgres/data/PG_VERSION: Permissão negada
abr 04 08:30:44 aspire postgres[122347]: An old version of the database format was found.
abr 04 08:30:44 aspire postgres[122347]: You need to dump and reload before using PostgreSQL 17.
abr 04 08:30:44 aspire postgres[122347]: See http://www.postgresql.org/docs/17/static/upgrading.html
abr 04 08:30:44 aspire systemd[1]: postgresql.service: Control process exited, code=exited, status=1/FAILURE
abr 04 08:30:44 aspire systemd[1]: postgresql.service: Failed with result 'exit-code'.
abr 04 08:30:44 aspire systemd[1]: Failed to start PostgreSQL database server.

Eu tentei conectar ao banco do docker, mas ele dá erro de autenticação. Tentei testar meu laravel, mas ele dá erro de conexão com a porta, dizendo que pode não estar conectada.

Eu já tentei seguir a documentação, mas toda vez que eu executo algum comando, reclama que não está conectada ao socket, etc.

Como que está seu arquivo docker-compose? Você realmente precisa usar o docker-compose? Se não for exigência do projeto, você pode subir o container de forma standalone fazendo pull da imagem e executando com docker run.

De acordo com a mensagem, o banco esta provavelmente em uma versão anterior a versão 17 e você precisa atualizar o banco para a versão 17.
Ele te da o link para fazer o procedimento.

Ahnn, exigência do projeto não é. Mas acabei utilizando para praticar…

Então, mas esse que é o problema, os comandos que eu rodei da atualização, ele dá erro dizendo a mesma coisa: fala que o postgres não está inicado, com erro na porta, etc.

Por exemplo, para fazer o dump, ele retorna isso aqui:

pg_dumpall: error: a conexão com o servidor no soquete “/run/postgresql/.s.PGSQL.5432” falhou: Arquivo ou diretório inexistente
O servidor está em execução localmente e aceitando conexões nesse soquete?

Sendo que rodei o comando justamente para tentar resolver isso kkkk um pouco contraditório.

Eu sei que tem um programa chamado pg_upgrade, mas ele preisa do diretório dos clusters antigos. Mas não sei como identificar ele.

Como que está seu arquivo docker-compose?¹

services:
    # image project
    app:
        build:
            context: .
            dockerfile: Dockerfile
        restart: unless-stopped
        working_dir: /var/www/
        volumes:
            - ./:/var/www
        depends_on:
            - redis
        networks:
            - laravel

    # nginx
    nginx:
        image: nginx:alpine
        restart: unless-stopped
        ports:
            - "8989:80"
        volumes:

            - ./:/var/www
            - ./docker/nginx/:/etc/nginx/conf.d/
        networks:
            - laravel

    # db postgres
    postgres:
        image: postgres:latest
        restart: unless-stopped
        environment:
            POSTGRES_DATABASE: ${DB_DATABASE:-trabalho_ajuda_ongs}
            POSTGRES_PASSWORD: ${DB_PASSWORD:-postgres_bob_user_docker}
            POSTGRES_USER: ${DB_USERNAME:-bob}
        volumes:
            - postgres_data:/var/lib/postgresql/data
        ports:
            - "5432:5432"
        networks:
            - laravel

    # redis
    redis:
        image: redis:latest
        networks:
            - laravel

volumes:
    app:
    nginx:
    postgres_data:
    redis:

networks:
    laravel:
        driver: bridge

Já tentou limar o volume e usar uma versão mais recente do Postgres? Por exemplo, a versão 17.4 na imagem Alpine.

services:
    # image project
    app:
        build:
            context: .
            dockerfile: Dockerfile
        restart: unless-stopped
        working_dir: /var/www/
        volumes:
            - ./:/var/www
        depends_on:
            - redis
        networks:
            - laravel

    # nginx
    nginx:
        image: nginx:alpine
        restart: unless-stopped
        ports:
            - "8989:80"
        volumes:
            - ./:/var/www
            - ./docker/nginx/:/etc/nginx/conf.d/
        networks:
            - laravel

    # db postgres
    postgres:
        image: postgres:17.4-alpine3.21
        restart: unless-stopped
        environment:
            POSTGRES_DATABASE: ${DB_DATABASE:-trabalho_ajuda_ongs}
            POSTGRES_PASSWORD: ${DB_PASSWORD:-postgres_bob_user_docker}
            POSTGRES_USER: ${DB_USERNAME:-bob}
        volumes:
            - postgres_data:/var/lib/postgresql/data
        ports:
            - "5432:5432"
        networks:
            - laravel

    # redis
    redis:
        image: redis:latest
        networks:
            - laravel

volumes:
    app:
    nginx:
    postgres_data:
    redis:

networks:
    laravel:
        driver: bridge

Ahhh agora consegui! Acredito que possa ter sido a versão, mas fui ajustando aqui, vendo também as senhas, e consegui!

1 curtida

Este tópico foi fechado automaticamente 3 dias depois da última resposta. Novas respostas não são mais permitidas.