-
-
Save jgillman/8191d6f587ffc7207a88e987e034b675 to your computer and use it in GitHub Desktop.
# Assumes the database container is named 'db' | |
DOCKER_DB_NAME="$(docker-compose ps -q db)" | |
DB_HOSTNAME=db | |
DB_USER=postgres | |
LOCAL_DUMP_PATH="path/to/local.dump" | |
docker-compose up -d db | |
docker exec -i "${DOCKER_DB_NAME}" pg_restore -C --clean --no-acl --no-owner -U "${DB_USER}" -d "${DB_HOSTNAME}" < "${LOCAL_DUMP_PATH}" | |
docker-compose stop db |
matthieusieben
commented
Aug 21, 2018
•
Thank you @matthieusieben I am still learning about docker composer. I will test this and let you know. the only missing part is how to bring the db container back up (restarting it)
Hi @matthieusieben, could you explain to me why does this work with a local path instead of a path in the container ? The commands runs in the container, right ?
@lud Since you run the command docker-compose exec ...
on your computer, that <
operator is interpreted on your computer as well not on the container ;-) I mean; the command to be run on the container is: pg_restore -C --clean --no-acl --no-owner -U "${DB_USER}" -d "${DB_NAME}"
w/o the < "${LOCAL_DUMP_PATH}"
suffix; that suffix is run on your computer. The pg_restore
is run w/o the --filename
parameter, it expects queries to be fed via std-input and <
provides data to std-input.
Ok that makes sense, thank you :)
pg_restore: [archiver] input file is too short (read 0, expected 5) error why ?
pg_restore: [archiver] input file is too short (read 0, expected 5) error why ?
x2
pg_restore: [archiver] input file is too short (read 0, expected 5) error why ?
did you ever solved it?
Your dump is probably empty or the argument on docker exec are missing.
Could you cat
your dump and paste the command you use ?
pg_restore: [archiver] input file is too short (read 0, expected 5) error why ?
x2
x3
Did you forget the -i
option in docker command by chance?
did somebody solve it? tips above didnt help