Merge branch 'dev_dockerfile' into 'master'
Add support for developers See merge request !18
This commit is contained in:
commit
008c33a221
8 changed files with 113 additions and 4 deletions
42
README.rst
42
README.rst
|
@ -1,5 +1,7 @@
|
||||||
symposion_app
|
symposion_app
|
||||||
===============
|
=============
|
||||||
|
|
||||||
|
.. contents::
|
||||||
|
|
||||||
At this time, considerations have not been made to have the django project run
|
At this time, considerations have not been made to have the django project run
|
||||||
without additional infrastructure.
|
without additional infrastructure.
|
||||||
|
@ -40,8 +42,36 @@ You may consider testing with testshib.
|
||||||
|
|
||||||
Configure signing and encryption keys, and configure them in the settings.py
|
Configure signing and encryption keys, and configure them in the settings.py
|
||||||
|
|
||||||
VirtualEnv
|
Running a dev instance in Docker
|
||||||
~~~~~~~~~~
|
--------------------------------
|
||||||
|
|
||||||
|
Assuming you have docker installed and working on your machine::
|
||||||
|
./make_dev_container.sh
|
||||||
|
|
||||||
|
will build you a container and run through the initial setup steps.
|
||||||
|
The last stage interactively creates a superuser account: you'll need
|
||||||
|
to interact with this for it to finish.
|
||||||
|
|
||||||
|
Once this has completed, you can hit http://localhost:28000/admin to
|
||||||
|
log into the admin interface. Once you're logged in,
|
||||||
|
http://localhost:28000 will take you to the dashboard.
|
||||||
|
|
||||||
|
Note that when you do this you're logged in as a superuser, so what
|
||||||
|
you see will be different from what a normal user will see.
|
||||||
|
|
||||||
|
Making migrations
|
||||||
|
~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
If you make changes to the data model, you'll need to run "manage.py
|
||||||
|
makemigrations" to create a matching migration file. If you're on a
|
||||||
|
mac, or a system without python3, this can be difficult. In such a
|
||||||
|
case, the ``makemigrations.sh`` script takes advantaged of a docker
|
||||||
|
container that's slightly modified, and runs the makemigration action
|
||||||
|
on the files in your working directory.
|
||||||
|
|
||||||
|
|
||||||
|
Running a dev instance in a VirtualEnv
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
Not all things are lovely, so we use constraints to force the versions we
|
Not all things are lovely, so we use constraints to force the versions we
|
||||||
we wish for without having to do anything ugly. This may require a newer
|
we wish for without having to do anything ugly. This may require a newer
|
||||||
|
@ -54,6 +84,9 @@ with a python3 interpreter.
|
||||||
- ``source ./venv/bin/activate``
|
- ``source ./venv/bin/activate``
|
||||||
- ``pip install -c constraints.txt -r requirements.txt``
|
- ``pip install -c constraints.txt -r requirements.txt``
|
||||||
|
|
||||||
|
Once your dev instance is up and running
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
Pre-post-start configuration
|
Pre-post-start configuration
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
@ -72,6 +105,9 @@ Shut down and now run:
|
||||||
|
|
||||||
Now you can run the system and see how it goes.
|
Now you can run the system and see how it goes.
|
||||||
|
|
||||||
|
Admin tasks
|
||||||
|
-----------
|
||||||
|
|
||||||
Admin Credentials
|
Admin Credentials
|
||||||
~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
22
docker/Dockerfile.makemigrations
Normal file
22
docker/Dockerfile.makemigrations
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
FROM python:3.6
|
||||||
|
VOLUME /source
|
||||||
|
COPY constraints.txt requirements.txt /setup/
|
||||||
|
RUN set -ex \
|
||||||
|
&& buildDeps=' \
|
||||||
|
libmysqlclient-dev \
|
||||||
|
libffi-dev \
|
||||||
|
libfreetype6-dev \
|
||||||
|
libjpeg-dev \
|
||||||
|
libwebp-dev \
|
||||||
|
libpng-dev \
|
||||||
|
liblcms2-dev \
|
||||||
|
zlib1g-dev \
|
||||||
|
libmemcached-dev \
|
||||||
|
libsasl2-dev \
|
||||||
|
' \
|
||||||
|
&& apt-get update \
|
||||||
|
&& apt-get install -y git xmlsec1 libmysqlclient18 \
|
||||||
|
&& apt-get install -y $buildDeps --no-install-recommends
|
||||||
|
RUN pip install -c /setup/constraints.txt -r /setup/requirements.txt
|
||||||
|
CMD ["python","/source/manage.py", "makemigrations"]
|
||||||
|
|
7
docker/laptop-mode-env
Normal file
7
docker/laptop-mode-env
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
DJANGO_SECRET_KEY=5CEA51A5-A613-4AEF-A9FB-D0A57D77C13B
|
||||||
|
STRIPE_PUBLIC_KEY=5CEA51A5-A613-4AEF-A9FB-D0A57D77C13B
|
||||||
|
STRIPE_SECRET_KEY=5CEA51A5-A613-4AEF-A9FB-D0A57D77C13B
|
||||||
|
GCS_BUCKET=5CEA51A5-A613-4AEF-A9FB-D0A57D77C13B
|
||||||
|
GOOGLE_APPLICATION_CREDENTIALS=/dev/null
|
||||||
|
DATABASE_URL=sqlite:////tmp/symposion.sqlite
|
||||||
|
SYMPOSION_DEV_MODE=LAPTOP
|
25
make_dev_container.sh
Executable file
25
make_dev_container.sh
Executable file
|
@ -0,0 +1,25 @@
|
||||||
|
#!/bin/bash -x
|
||||||
|
|
||||||
|
CONTAINER_NAME=${1:-symposion_app}
|
||||||
|
|
||||||
|
docker image build -f docker/Dockerfile -t ${CONTAINER_NAME} .
|
||||||
|
docker container stop symposion
|
||||||
|
docker container rm symposion
|
||||||
|
docker container create --env-file docker/laptop-mode-env -p 28000:8000 --name symposion ${CONTAINER_NAME}
|
||||||
|
docker container start symposion
|
||||||
|
docker exec symposion ./manage.py migrate
|
||||||
|
docker exec symposion ./manage.py loaddata ./fixtures/*.json
|
||||||
|
docker exec symposion ./manage.py create_review_permissions
|
||||||
|
docker exec -it symposion ./manage.py createsuperuser --username root --email root@example.com
|
||||||
|
|
||||||
|
## The following sets up everything required for rego - tickets and
|
||||||
|
## t-shirts and stuff. At this stage, it's not something we want.
|
||||||
|
|
||||||
|
#docker exec symposion ./manage.py populate_inventory
|
||||||
|
|
||||||
|
set +x
|
||||||
|
echo "Now you can log into http://localhost:28000/admin"
|
||||||
|
echo "Username: root Password: the one you just typed twice"
|
||||||
|
echo "If you need to test as a non-admin user, create one at"
|
||||||
|
echo "http://localhost:28000/admin/auth/user/add/ - then log out"
|
||||||
|
echo "and log back in at http://localhost:28000"
|
4
makemigrations.sh
Executable file
4
makemigrations.sh
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/bash -x
|
||||||
|
docker image build -f docker/Dockerfile.makemigrations -t makemigrations .
|
||||||
|
docker run -it --env-file=docker/laptop-mode-env -v $(pwd):/source makemigrations
|
||||||
|
|
7
pinaxcon/devmode_settings.py
Normal file
7
pinaxcon/devmode_settings.py
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
|
||||||
|
AUTHENTICATION_BACKENDS = [
|
||||||
|
'symposion.teams.backends.TeamPermissionsBackend',
|
||||||
|
'django.contrib.auth.backends.ModelBackend',
|
||||||
|
]
|
||||||
|
LOGIN_URL='/accounts/login'
|
||||||
|
|
|
@ -382,3 +382,8 @@ DEFAULT_FILE_STORAGE = 'gapc_storage.storage.GoogleCloudStorage'
|
||||||
GAPC_STORAGE = {
|
GAPC_STORAGE = {
|
||||||
'num_retries': 2,
|
'num_retries': 2,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEV_MODE = os.environ.get("SYMPOSION_DEV_MODE", None)
|
||||||
|
if DEV_MODE and DEV_MODE == "LAPTOP":
|
||||||
|
print("ENABLING LAPTOP MODE")
|
||||||
|
from .devmode_settings import *
|
||||||
|
|
|
@ -33,6 +33,9 @@ urlpatterns = [
|
||||||
if settings.DEBUG:
|
if settings.DEBUG:
|
||||||
import debug_toolbar
|
import debug_toolbar
|
||||||
urlpatterns.insert(0, url(r'^__debug__/', include(debug_toolbar.urls)))
|
urlpatterns.insert(0, url(r'^__debug__/', include(debug_toolbar.urls)))
|
||||||
|
if settings.DEV_MODE:
|
||||||
|
from django.contrib.auth.views import login, logout
|
||||||
|
urlpatterns.insert(0, url(r'^accounts/logout', logout, {'template_name': 'admin/logout.html'}))
|
||||||
|
urlpatterns.insert(0, url(r'^accounts/login', login, {'template_name': 'admin/login.html'}))
|
||||||
|
|
||||||
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
||||||
|
|
Loading…
Reference in a new issue