17

I am trying to figure out how to completely remove a docker container with a postgres database and rebuild using docker-compose?

I created a server and database container using docker-compose. The database did not get set up how I wanted, so I would like to remove the database and rebuild. I assumed the easiest solution, given it is brand new would be to stop the container from running, remove the container and then run docker-compose again.

I have followed those steps, do not see any of the containers. I do not see any volumes associated with the containers. However, when I run docker-compose it appears to be using the postgres database that was previously created?

Here is what my docker-compose files consists of with user/password/db name extracted.

services:
  server:
    image: "node:10"
    user: "node"
    working_dir: /home/node/app
    volumes:
      - ./:/home/node/app
    ports:
      - 3030:3030
    command: "npm start"
    depends_on:
      - db
  db:
    image: postgres:latest
    restart: always
    environment:
      POSTGRES_USER: [user] 
      POSTGRES_PASSWORD: [password]
      POSTGRES_DB: [db_name]
    volumes:
      - ./data/postgres:/var/lib/postgresql/data

I expected that by using:

docker stop [container] to stop the container, then docker rm [container] to remove the container

I could rebuild fresh with docker-compose up

2 Answers 2

18

You can list the volumes used by docker with this command:

docker volume ls

Then, if needed, you can inspect the volumes to find which one your database uses:

docker volume inspect xyzvolumename

After locating the volume used by your database, delete it for a fresh start:

docker volume rm locatedvolumename
Sign up to request clarification or add additional context in comments.

Comments

10

Docker stop and docker rm will not work untill you remove bind mount volume from your docker-compose.

Remove this from your docker-compose

     - ./data/postgres:/var/lib/postgresql/data

or delete everything from host directory inside

./data/postgres

2 Comments

I deleted the information from ./data/postres , which for my situation was ideal.
This article was also helpful to get more of an understanding on how docker is handling volumes set up within compose: linux.com/tutorials/docker-volumes-and-networks-compose

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.