|
1 | 1 | #!/bin/sh |
| 2 | +# This script can be used as an entrypoint to get the Docker image started as |
| 3 | +# follows: |
| 4 | +# |
| 5 | +# ``docker run -it -p 8000:8000 appsecpipeline/django-defectdojo bash -c "export LOAD_SAMPLE_DATA=True && bash /opt/django-DefectDojo/docker/docker-startup.bash"`` |
| 6 | +# |
| 7 | +# Run it at the application root |
| 8 | +# |
| 9 | + |
| 10 | +source entrypoint_scripts/common/dojo-shared-resources.sh |
| 11 | + |
| 12 | +# This function invocation ensures we're running the script at the right place |
| 13 | +verify_cwd |
| 14 | + |
2 | 15 | #Set the SQL variables |
3 | 16 | SQLUSER=$MYSQL_USER |
4 | 17 | SQLPWD=$MYSQL_PASSWORD |
5 | 18 | SQLHOST=$DOJO_MYSQL_HOST |
6 | 19 | DBNAME=$MYSQL_DATABASE |
7 | 20 |
|
8 | | -source /django-DefectDojo/scripts/dojo-shared-functions.bash |
9 | | - |
10 | 21 | ########### Setup and Run Entry ############# |
11 | 22 | if [ "$1" == "setup" ]; then |
12 | 23 | setupdojo |
13 | | - chown -R dojo:dojo /django-DefectDojo |
| 24 | + chown -R dojo:dojo $DOJO_ROOT_DIR |
14 | 25 | else |
15 | 26 | echo "==============================================================================" |
16 | 27 | echo "Starting DefectDojo" |
|
20 | 31 | PORT=8000 |
21 | 32 | fi |
22 | 33 |
|
23 | | - cd /django-DefectDojo/ |
24 | | - source venv/bin/activate |
| 34 | + source $DOJO_VENV_NAME/bin/activate |
25 | 35 |
|
26 | 36 | #Check to see if Dojo has been setup by checking the settings.py file |
27 | 37 | if [ ! -f dojo/settings/settings.py ]; |
|
37 | 47 | cp dojo/settings/settings.dist.py dojo/settings/settings.py |
38 | 48 |
|
39 | 49 | # Save MySQL details in settings file |
40 | | - sed -i "s/MYSQLUSER/$SQLUSER/g" dojo/settings/settings.py |
41 | | - sed -i "s/MYSQLPWD/$SQLPWD/g" dojo/settings/settings.py |
42 | | - sed -i "s/MYSQLDB/$DBNAME/g" dojo/settings/settings.py |
43 | | - sed -i "s/MYSQLHOST/$DOJO_MYSQL_HOST/g" dojo/settings/settings.py |
44 | | - sed -i "s/MYSQLPORT/$DOJO_MYSQL_PORT/g" dojo/settings/settings.py |
45 | | - sed -i "s#DOJODIR#$PWD/dojo#g" dojo/settings/settings.py |
46 | | - sed -i "s/DOJOSECRET/$SECRET/g" dojo/settings/settings.py |
47 | | - sed -i "s#DOJOURLPREFIX#$DOJO_URL_PREFIX#g" dojo/settings/settings.py |
48 | | - sed -i "s#BOWERDIR#$PWD/components#g" dojo/settings/settings.py |
49 | | - sed -i "s#DOJO_MEDIA_ROOT#$PWD/media/#g" dojo/settings/settings.py |
50 | | - sed -i "s#DOJO_STATIC_ROOT#$PWD/static/#g" dojo/settings/settings.py |
| 50 | + sed -i "s/MYSQLUSER/$SQLUSER/g" dojo/settings/settings.py |
| 51 | + sed -i "s/MYSQLPWD/$SQLPWD/g" dojo/settings/settings.py |
| 52 | + sed -i "s/MYSQLDB/$DBNAME/g" dojo/settings/settings.py |
| 53 | + sed -i "s/MYSQLHOST/$DOJO_MYSQL_HOST/g" dojo/settings/settings.py |
| 54 | + sed -i "s/MYSQLPORT/$DOJO_MYSQL_PORT/g" dojo/settings/settings.py |
| 55 | + sed -i "s#DOJODIR#$PWD/dojo#g" dojo/settings/settings.py |
| 56 | + sed -i "s/DOJOSECRET/$SECRET/g" dojo/settings/settings.py |
| 57 | + sed -i "s#DOJOURLPREFIX#$DOJO_URL_PREFIX#g" dojo/settings/settings.py |
| 58 | + sed -i "s#BOWERDIR#$PWD/components#g" dojo/settings/settings.py |
| 59 | + sed -i "s#DOJO_MEDIA_ROOT#$PWD/media/#g" dojo/settings/settings.py |
| 60 | + sed -i "s#DOJO_STATIC_ROOT#$PWD/static/#g" dojo/settings/settings.py |
51 | 61 |
|
52 | 62 | if [ "$RUN_TIERED" = True ]; then |
53 | 63 | echo "Setting dojo settings for tiered docker-compose." |
54 | | - sed -i "s/TEMPLATE_DEBUG = DEBUG/TEMPLATE_DEBUG = False/g" dojo/settings/settings.py |
55 | | - sed -i "s/DEBUG = True/DEBUG = False/g" dojo/settings/settings.py |
56 | | - sed -i "s/ALLOWED_HOSTS = \[]/ALLOWED_HOSTS = ['localhost', '127.0.0.1']/g" dojo/settings/settings.py |
| 64 | + sed -i "s/TEMPLATE_DEBUG = DEBUG/TEMPLATE_DEBUG = False/g" dojo/settings/settings.py |
| 65 | + sed -i "s/DEBUG = True/DEBUG = False/g" dojo/settings/settings.py |
| 66 | + sed -i "s/ALLOWED_HOSTS = \[]/ALLOWED_HOSTS = ['localhost', '127.0.0.1']/g" dojo/settings/settings.py |
57 | 67 | else |
58 | 68 | echo "Setting dojo settings for SQLLITEDB." |
59 | 69 | SQLLITEDB="'NAME': os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'db.sqlite3')" |
60 | | - sed -i "s/django.db.backends.mysql/django.db.backends.sqlite3/g" dojo/settings/settings.py |
61 | | - sed -i "s/'NAME': '$DBNAME'/$SQLLITEDB/g" dojo/settings/settings.py |
| 70 | + sed -i "s/django.db.backends.mysql/django.db.backends.sqlite3/g" dojo/settings/settings.py |
| 71 | + sed -i "s/'NAME': '$DBNAME'/$SQLLITEDB/g" dojo/settings/settings.py |
62 | 72 | fi |
63 | 73 | fi |
64 | 74 |
|
|
69 | 79 | echo "==============================================================================" |
70 | 80 | echo |
71 | 81 | #Make sure MySQL is up and running, run the mysql script to check the port and report back |
72 | | - bash /django-DefectDojo/docker/wait-for-it.sh $DOJO_MYSQL_HOST:$DOJO_MYSQL_PORT |
| 82 | + bash $DOCKER_DIR/wait-for-it.sh $DOJO_MYSQL_HOST:$DOJO_MYSQL_PORT |
73 | 83 |
|
74 | 84 | if [ $? -eq 0 ]; then |
75 | 85 | echo "Database server is up and running." |
|
86 | 96 | echo "==============================================================================" |
87 | 97 | echo |
88 | 98 | #Start gunicorn |
89 | | - cd /django-DefectDojo/ |
| 99 | + cd $DOJO_ROOT_DIR |
90 | 100 | gunicorn --env DJANGO_SETTINGS_MODULE=dojo.settings dojo.wsgi:application --bind 0.0.0.0:$PORT --workers 3 & celery -A dojo worker -l info --concurrency 3 |
91 | 101 | else |
92 | 102 | echo "MySQL server is down or dojo can't access mysql" |
|
98 | 108 | if [ ! -f setupcomplete ]; |
99 | 109 | then |
100 | 110 | createadmin |
101 | | - bash /django-DefectDojo/docker/dojo-data.bash load |
| 111 | + bash $DOCKER_DIR/dojo-data.bash load |
102 | 112 | touch setupcomplete |
103 | 113 | fi |
104 | 114 |
|
|
111 | 121 | echo "Starting Python Server" |
112 | 122 | echo "==============================================================================" |
113 | 123 | echo |
114 | | - cd /django-DefectDojo/ |
115 | | - source venv/bin/activate |
| 124 | + |
| 125 | + source $DOJO_VENV_NAME/bin/activate |
116 | 126 | pip freeze |
117 | 127 | python manage.py runserver 0.0.0.0:$PORT & celery -A dojo worker -l info --concurrency 3 |
118 | 128 | echo |
|
0 commit comments