OWASP/crAPI

Dependency failed to start: container for service "crapi-workshop" exited (0)

Jeevanchathuranga opened this issue · 4 comments

Describe the bug
when run the application under crapi-workshop container. it shows an error named as creating the test database: database "test_crapi" already exists

To Reproduce
Steps to reproduce the behavior.
1.$mkdir ~/lab 

2.$cd ~/lab

3.#sudo curl -o docker-compose.yml https://raw.githubusercontent.com/OWASP/crAPI/main/deploy/docker/docker-compose.yml

4.$mv docker-compose.yml crapi

5.$cd crapi

6.$ sudo docker-compose pull

7.$ sudo docker-compose -f docker-compose.yml --compatibility up -d

First time it works properly. but second day when i run application again step 7 it gives an error.
psycopg2.errors.DuplicateDatabase: database "test_crapi" already exists

Expected behavior

Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/django/db/backends/base/creation.py", line 170, in _create_test_db
self._execute_create_test_db(cursor, test_db_params, keepdb)
File "/usr/local/lib/python3.8/site-packages/django/db/backends/postgresql/creation.py", line 51, in _execute_create_test_db
raise e
File "/usr/local/lib/python3.8/site-packages/django/db/backends/postgresql/creation.py", line 42, in _execute_create_test_db
super()._execute_create_test_db(cursor, parameters, keepdb)
File "/usr/local/lib/python3.8/site-packages/django/db/backends/base/creation.py", line 156, in _execute_create_test_db
cursor.execute('CREATE DATABASE %(dbname)s %(suffix)s' % parameters)
File "/usr/local/lib/python3.8/site-packages/django/db/backends/utils.py", line 67, in execute
return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
File "/usr/local/lib/python3.8/site-packages/django/db/backends/utils.py", line 76, in _execute_with_wrappers
return executor(sql, params, many, context)
File "/usr/local/lib/python3.8/site-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
File "/usr/local/lib/python3.8/site-packages/django/db/utils.py", line 89, in exit
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/usr/local/lib/python3.8/site-packages/django/db/backends/utils.py", line 82, in _execute
return self.cursor.execute(sql)
django.db.utils.ProgrammingError: database "test_crapi" already exists

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "manage.py", line 35, in
main()
File "manage.py", line 31, in main
execute_from_command_line(sys.argv)
File "/usr/local/lib/python3.8/site-packages/django/core/management/init.py", line 381, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python3.8/site-packages/django/core/management/init.py", line 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python3.8/site-packages/django/core/management/commands/test.py", line 23, in run_from_argv
super().run_from_argv(argv)
File "/usr/local/lib/python3.8/site-packages/django/core/management/base.py", line 323, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/local/lib/python3.8/site-packages/django/core/management/base.py", line 364, in execute
output = self.handle(*args, **options)
File "/usr/local/lib/python3.8/site-packages/django/core/management/commands/test.py", line 53, in handle
failures = test_runner.run_tests(test_labels)
File "/usr/local/lib/python3.8/site-packages/django/test/runner.py", line 629, in run_tests
old_config = self.setup_databases(aliases=databases)
File "/usr/local/lib/python3.8/site-packages/django/test/runner.py", line 552, in setup_databases
return _setup_databases(
File "/usr/local/lib/python3.8/site-packages/django/test/utils.py", line 170, in setup_databases
connection.creation.create_test_db(
File "/usr/local/lib/python3.8/site-packages/django/db/backends/base/creation.py", line 58, in create_test_db
self._create_test_db(verbosity, autoclobber, keepdb)
File "/usr/local/lib/python3.8/site-packages/django/db/backends/base/creation.py", line 179, in _create_test_db
confirm = input(
EOFError: EOF when reading a line

Runtime Environment
Sytem/Environemnt information
Docker version 20.10.12, build 20.10.12-0ubuntu2~20.04.1

Could you try a docker-compose down to remove the previous containers.

Tried..but it gives same error..i dont need old data. I tried to start the instance again...same problem

This is because old data is persisted in docker volumes, you should remove the postgresdb related docker volume

docker volume rm docker_postgresql-data
docker volume rm docker_mongodb-data

This happened because crapi was shutdown in the middle of container starting which persisted the temporarily created test databases in postgresdb.

This is because old data is persisted in docker volumes, you should remove the postgresdb related docker volume

docker volume rm docker_postgresql-data
docker volume rm docker_mongodb-data

This happened because crapi was shutdown in the middle of container starting which persisted the temporarily created test databases in postgresdb.

It works. thanks nikhil