Files
@ ddae8d91f682
Branch filter:
Location: symposion_app/make_dev_container.sh - annotation
ddae8d91f682
1.7 KiB
text/x-sh
Improved handling of static/build and css generation
When the container is mounted, the local contents of . obscure
/app/symposion_app in the image.
Generally speaking, this is handy for development, as it means that
local changes are detected and used immediately without needing to
restart the container.
However, it breaks in the specific case of the sass->css
generation. Prior to this change, the css is generated only after the
first time a page is hit. The generated file is placed in
static/build; however, due to the obscuration, this generated file
isn't visible to the running process.
The next time the container is built, the pre-existing static/build
directory is copied into the container as it's being built; then,
later, that version is what gets served.
This change adds the needed libraries to pre-generate the css as part
of the image build, and runs compilescss to do this, prior to the
collectstatic step.
It also adds a second collectstatic into the make_dev_container
script, so that the visible static/build directory should ahve the
same contents as the obscured static/build directory. It also expands
the .dockerignore file to make sure these files aren't copied into the
image in future.
I'm not sure if this is the right thing to do, as changes to this
directory will be ignored, which could be confusing. Perhaps never
being able to see these generated files is better?
When the container is mounted, the local contents of . obscure
/app/symposion_app in the image.
Generally speaking, this is handy for development, as it means that
local changes are detected and used immediately without needing to
restart the container.
However, it breaks in the specific case of the sass->css
generation. Prior to this change, the css is generated only after the
first time a page is hit. The generated file is placed in
static/build; however, due to the obscuration, this generated file
isn't visible to the running process.
The next time the container is built, the pre-existing static/build
directory is copied into the container as it's being built; then,
later, that version is what gets served.
This change adds the needed libraries to pre-generate the css as part
of the image build, and runs compilescss to do this, prior to the
collectstatic step.
It also adds a second collectstatic into the make_dev_container
script, so that the visible static/build directory should ahve the
same contents as the obscured static/build directory. It also expands
the .dockerignore file to make sure these files aren't copied into the
image in future.
I'm not sure if this is the right thing to do, as changes to this
directory will be ignored, which could be confusing. Perhaps never
being able to see these generated files is better?
fb5d0b894160 fb5d0b894160 fb5d0b894160 fb5d0b894160 a0c6dffd871c a0c6dffd871c a0c6dffd871c a0c6dffd871c a0c6dffd871c a0c6dffd871c af5fec11ff33 fb5d0b894160 fb5d0b894160 af5fec11ff33 fb5d0b894160 ddae8d91f682 ddae8d91f682 ddae8d91f682 ddae8d91f682 fb5d0b894160 44cc0e356f8d fb5d0b894160 026199faf340 026199faf340 79310913ad4d 79310913ad4d 026199faf340 026199faf340 6a479055a029 6a479055a029 6a479055a029 6a479055a029 fb5d0b894160 fe8da10c2211 fe8da10c2211 fe8da10c2211 fe8da10c2211 fe8da10c2211 fe8da10c2211 3c2c2543fd99 | #!/bin/bash -x
CONTAINER_NAME=${1:-symposion_app}
if [ -e ./symposion-tools ]; then
pushd ./symposion-tools
./save_db_from_docker.sh
popd
fi
docker image build -f docker/Dockerfile -t ${CONTAINER_NAME} --target symposion_dev .
docker container stop symposion
docker container rm symposion
docker container create --env-file docker/laptop-mode-env -p 28000:8000 -v $(pwd):/app/symposion_app --name symposion ${CONTAINER_NAME}
docker container start symposion
## When we started the container and mounted . into /app/symposion_app, it hides the static/build directory
## As a kludge, re-run collectstatic to recreate it
## Possible alternative here: don't mount all of ., just mount the bits that we'd live to have update live
docker exec symposion ./manage.py collectstatic --noinput -v 0
docker exec symposion ./manage.py migrate
docker exec symposion ./manage.py loaddata ./fixtures/{conference,sites,sitetree,proposal_base,flatpages}.json
docker exec symposion ./manage.py create_review_permissions
#docker exec symposion ./manage.py populate_inventory
#docker exec symposion ./manage.py loaddata ./fixtures/miniconf-fixtures/*.json
if [ -e ./symposion-tools ]; then
pushd ./symposion-tools
./fixture_to_docker.sh fixtures/dev_dummy_superuser.json
./fixture_to_docker.sh fixtures/????_*.json
popd
else
docker exec -it symposion ./manage.py createsuperuser --username root --email root@example.com
fi
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"
|