Bookwyrm developers and instance managers can use the
bw-dev script for common tasks. This can make your commands shorter, easier to remember, and harder to mess up.
Docker shortcuts Hyperlink to this header
Open an interactive
bash session inside the docker
build Hyperlink to this header
dbshell Hyperlink to this header
Open an interactive Postgres database shell. I hope you know what you're doing.
runweb args Hyperlink to this header
Run an arbitrary command (represented above by
args) in the
docker-compose run --rm web.
service_ports_web args Hyperlink to this header
Run an arbitrary command in the
web container (represented above by
args) with ports exposed. This is useful if you want to run
pdb tests because
runweb will not expose the
docker-compose run --rm --service-ports web.
shell Hyperlink to this header
Open an interactive Django shell inside the docker
web container. You would use this if you want to run Django shell commands directly. For example when making your initial user a superuser.
up [args] Hyperlink to this header
Start or restart Docker containers, optionally including any arguments (represented above by
args). Equivalent to
docker-compose up --build [args]
Managing the database Hyperlink to this header
initdb Hyperlink to this header
Initialize a database.
makemigrations [appname migration number] Hyperlink to this header
This command is not available on the
makemigrations command inside your Docker container. If you have changed the database structure in a development branch you will need to run this for your changes to have effect. Optionally, you can specify a specific migration to run, e.g.
./bw-dev makemigrations bookwyrm 0108
migrate Hyperlink to this header
migrate command inside your Docker container. You always need to run this after
resetdb Hyperlink to this header
This command is not available on the
Resets the database. This command will delete your entire Bookwyrm database, and then initiate a fresh database and run all migrations. You should delete any recent migration files you do not want to run, before running
Managing a Bookwyrm instance Hyperlink to this header
collectstatic Hyperlink to this header
Migrate static assets to either a Docker container or to an S3-compatible "bucket", depending on the context.
generate_preview_images Hyperlink to this header
Generate preview images for site, users, and books. This can take a while if you have a large database.
generate_thumbnails Hyperlink to this header
Generates thumbnail images for book covers.
populate_streams Hyperlink to this header
Re-populates Redis streams (user feeds). You will not usually need to run this unless there is an error that wipes out your user feeds for some reason.
populate_suggestions Hyperlink to this header
Populate suggested users for all users. You may want to run this manually to refresh suggestions.
restart_celery Hyperlink to this header
celery_worker Docker container.
update Hyperlink to this header
When there are changes to the
production branch, you can update your instance without downtime.
git pulls the latest
production branch updates, builds docker images if necessary, runs Django migrations, updates static files, and restarts all Docker containers.
Setting up S3 compatible storage Hyperlink to this header
By default, BookWyrm uses local storage for static assets (favicon, default avatar, etc.), and media (user avatars, book covers, etc.), but you can use an external storage service to serve these files. BookWyrm uses django-storages to handle external storage, such as S3-compatible services, Apache Libcloud or SFTP.
See External Storage for more information.
copy_media_to_s3 Hyperlink to this header
Migrate all uploaded media from an existing Bookwrym installation to an S3-compatible "bucket". Use for initial upload to an empty bucket.
sync_media_to_s3 Hyperlink to this header
Sync new or changed uploaded media from an existing Bookwrym installation to an S3-compatible "bucket". Use to ensure all local files are uploaded to an existing bucket.
set_cors_to_s3 filename Hyperlink to this header
Copy a CORS rules JSON file to your S3 bucket, where
filename is the name of your JSON file (e.g.
./bw-dev set_cors_to_s3 cors.json)
Development and testing Hyperlink to this header
These commands are not available on the
black Hyperlink to this header
BookWyrm uses the Black code formatter to keep the Python codebase consistent styled. Run
black before committing your changes so the
pylint task does not fail for your pull request and make you sad.
clean Hyperlink to this header
Remove all stopped Docker containers.
docker-compose stop docker-compose rm -f
makemessages Hyperlink to this header
Creates message files for all translation strings. After you have run
makemessages you need to run
compilemessages to compile the translations. See Django's makemessages.
compilemessages Hyperlink to this header
Compiles translation files. See Django's compilemessages.
pytest Hyperlink to this header
Run tests with