If anyone can help me.
I’m creating a dump so that when I start docker-compose up -d, this dump will be started. I’m using Postgres, I created an init_db.sh file where it checks if the conversion schema does not exist, it performs the initialization. This init is inside the scripts directory where the dump is located.
I also have a file called run_db.sh that calls the init file only after docker is ready, and I want it to restore the dump inside docker
Docker looks like this:
version: ‘3.5’
services:
banco_postgres:
networks:
- conversao_default
container_name: artemoveis_postgres
image: postgres:14
shm_size: ‘2gb’
environment:
POSTGRES_HOST_AUTH_METHOD: “trust”
ports:
- 5432:5432
volumes:
- ./db_postgres:/var/lib/postgresql/data
- .:/conversao
command: /bin/bash -c “/run_init.sh” # Executa o script run_init.sh após a inicialização
networks:
conversao_default:
driver: bridge
the run is like this:
#!/bin/bash
echo “entrando no run”
Verificar se o docker-compose está em execução
if docker-compose ps | grep -q “Up”; then
echo “Docker-compose está em execução. Iniciando o script init_db.sh dentro do contêiner…”
# Executar o script dentro do contêiner
docker-compose exec banco_postgres bash -c "cd conversao/scripts && ./init_db.sh"
else
echo “Docker-compose não está em execução ou não está funcionando corretamente. Verifique o estado do docker-compose.”
fi
init is like this:
#!/bin/bash
echo “Entrando no init e fazendo a verificação”
Verifica se o esquema ‘conversao’ já existe no banco de dados
if psql -U postgres -d postgres -c “SELECT schema_name FROM information_schema.schemata WHERE schema_name = ‘conversao’;” | grep -q conversao; then
echo “O esquema ‘conversao’ já existe. Nenhuma restauração necessária.”
else
# Restaurar o backup se o esquema ‘conversao’ ainda não existir
echo “Restaurando backup…”
psql -U postgres -d postgres < /conversao/scripts/dump_conversao_v2.sql
# Marca que o backup foi restaurado
touch /var/lib/postgresql/data/backup_restored.txt
fi
Iniciar o servidor PostgreSQL
exec “$@”
but when trying to upload docker, it gives this error:
conversao/dados_clientes/artemoveis/dados_cliente/backup/conversao$ docker-compose logs
Attaching to artemoveis_postgres
artemoveis_postgres | /bin/bash: line 1: /run_init.sh: No such file or directory
artemoveis_postgres | /bin/bash: line 1: /run_init.sh: No such file or directory.
If anyone has a solution or another way to do this