ivorynoise
ivorynoise

Reputation: 370

Pgadmin container kills postgres when using docker-compose

I run postgres using docker-compose -f postgres.yml up. When I try to run pgadmin4 using docker-compose -f pgadmin4.yml up, postgres container is automatically killed.

I am new to docker and doesn't understand why is this issue happening?

postgres.yml

version: "3.7"
services:
    postgres:
        container_name: "postgres"
        image: "postgres"
        ports:
            - "5432:5432"
        environment:
            POSTGRES_PASSWORD: ****
        volumes:
            - maple:/var/lib/postgresql/data
volumes:
    maple:
        name: maple
        external: true

pgadmin.yml

version: "3.7"
services:
  postgres:
    container_name: "pgadmin4"
    image: "dpage/pgadmin4"
    ports:
      - "5433:80"
    environment:
      PGADMIN_DEFAULT_EMAIL: ******
      PGADMIN_DEFAULT_PASSWORD: *****
    volumes:
      - pgadmin4-vol:/var/lib/pgadmin
volumes:
  pgadmin4-vol:
    name: pgadmin4-vol
    external: true

$ docker-compose -f psql.yml up

Starting postgres ... done
Attaching to postgres
postgres    |
postgres    | PostgreSQL Database directory appears to contain a database; Skipping initialization
postgres    |
postgres    | 2020-11-27 10:18:05.635 UTC 1 LOG:  starting PostgreSQL 13.0 (Debian 13.0-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
postgres    | 2020-11-27 10:18:05.636 UTC 1 LOG:  listening on IPv4 address "0.0.0.0", port 5432
postgres    | 2020-11-27 10:18:05.636 UTC 1 LOG:  listening on IPv6 address "::", port 5432
postgres    | 2020-11-27 10:18:05.639 UTC 1 LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
postgres    | 2020-11-27 10:18:05.643 UTC [24] LOG:  database system was shut down at 2020-11-27 10:17:59 UTC
postgres    | 2020-11-27 10:18:05.647 UTC 1 LOG:  database system is ready to accept connections
postgres    | 2020-11-27 10:18:11.089 UTC 1 LOG:  received fast shutdown request
postgres    | 2020-11-27 10:18:11.092 UTC 1 LOG:  aborting any active transactions
postgres    | 2020-11-27 10:18:11.099 UTC 1 LOG:  background worker "logical replication launcher" (PID 30) exited with exit code 1
postgres    | 2020-11-27 10:18:11.108 UTC [25] LOG:  shutting down
postgres    | 2020-11-27 10:18:11.127 UTC 1 LOG:  database system is shut down
postgres exited with code 0

$ docker-compose -f pgadmin.yml up

Recreating postgres ... done
Attaching to pgadmin4
pgadmin4    | sudo: setrlimit(RLIMIT_CORE): Operation not permitted
pgadmin4    | [2020-11-27 10:18:13 +0000] 1 [INFO] Starting gunicorn 19.9.0
pgadmin4    | [2020-11-27 10:18:13 +0000] 1 [INFO] Listening at: http://[::]:80 (1)
pgadmin4    | [2020-11-27 10:18:13 +0000] 1 [INFO] Using worker: threads
pgadmin4    | /usr/local/lib/python3.8/os.py:1023: RuntimeWarning: line buffering (buffering=1) isn't supported in binary mode, the default buffer size will be used
pgadmin4    |   return io.open(fd, *args, **kwargs)
pgadmin4    | [2020-11-27 10:18:13 +0000] [87] [INFO] Booting worker with pid: 87

Upvotes: 1

Views: 919

Answers (1)

Elytscha Smith
Elytscha Smith

Reputation: 1565

your services are both named postgres

so the pgadmin.yml recreates the service postgres, wich is your first database container.. as the logs are clearly showing

'Recreating postgres ... done'

take another name for the pgadmin service then postgres and it should work.

version: "3.7"
  services:
    pgadmin:

also docker-compose is for building stacks, if you would have done this in one compose file you would have seen the error from begin:

docker-compose.failing.yml:

version: "3.7"
services:
  postgres:
    container_name: "postgres"
    image: "postgres"
    ports:
      - "5432:5432"
    environment:
      POSTGRES_PASSWORD: test
    volumes:
      - maple:/var/lib/postgresql/data

  postgres:
    container_name: "pgadmin4"
    image: "dpage/pgadmin4"
    ports:
      - "5433:80"
    environment:
      PGADMIN_DEFAULT_EMAIL: test
      PGADMIN_DEFAULT_PASSWORD: test
    volumes:
      - pgadmin4-vol:/var/lib/pgadmin
      
volumes:
  maple:
    name: maple
    external: true
  pgadmin4-vol:
    name: pgadmin4-vol
    external: true

docker-compose.working.yml:

version: "3.7"
services:
  postgres:
    container_name: "postgres"
    image: "postgres"
    ports:
      - "5432:5432"
    environment:
      POSTGRES_PASSWORD: test
    volumes:
      - maple:/var/lib/postgresql/data

  pgadmin:
    container_name: "pgadmin4"
    image: "dpage/pgadmin4"
    ports:
      - "5433:80"
    environment:
      PGADMIN_DEFAULT_EMAIL: test
      PGADMIN_DEFAULT_PASSWORD: test
    volumes:
      - pgadmin4-vol:/var/lib/pgadmin

volumes:
  maple:
    name: maple
    external: true
  pgadmin4-vol:
    name: pgadmin4-vol
    external: true

Upvotes: 2

Related Questions