feat: Add awesome devcontainer intro and better readme

This commit is contained in:
palid 2024-02-01 01:16:07 +01:00
parent 6065c74d70
commit 185896f4bb
Signed by: palid
SSH key fingerprint: SHA256:Mus3wCd2x6nxtARI0DpWGT7lIWbNy3R90BVDg0j35PI
8 changed files with 48 additions and 22 deletions

View file

@ -28,7 +28,8 @@
// Uncomment the next line if you want to keep your containers running after VS Code shuts down.
// "shutdownAction": "none",
// Uncomment the next line to run commands after the container is created.
"postCreateCommand": "${containerWorkspaceFolder}/manage.py migrate",
"postStartCommand": "${containerWorkspaceFolder}/manage.py migrate",
"postCreateCommand": "${containerWorkspaceFolder}/manage.py collectstatic",
"customizations": {
"vscode": {
"settings": {

View file

@ -1,4 +1,4 @@
version: "3"
version: "3.4"
services:
web:
volumes:
@ -7,6 +7,9 @@ services:
# Overrides default command so things don't shut down after the process ends.
command: /bin/sh -c "while sleep 1000; do :; done"
env_file:
- path: "../.env"
required: false
environment:
- SPEJSTORE_ENV=dev
- SPEJSTORE_DB_NAME=postgres
@ -20,4 +23,5 @@ services:
# - SPEJSTORE_MEDIA_ROOT=
# - SPEJSTORE_REQUIRE_AUTH=true
- SPEJSTORE_OAUTH_REDIRECT_IS_HTTPS=false
- SPEJSTORE_SPEJSTORE_FILE_STORAGE_TYPE="filesystem"
# - SPEJSTORE_PROXY_TRUSTED_IPS=172.21.37.1

View file

@ -20,3 +20,4 @@ log
.Dockerfile
.env
.devcontainer
readme

View file

@ -1,33 +1,46 @@
# spejstore
# spejstore (AKA inventory)
The general HSWAW (and other polish hackerspaces) inventory system.
Because there is not enough general inventory software invented here yet.
Please use Python3, for the love of `$deity`...
## Usage
### Quick start
### Quick start (VSCode)
1. Run:
```sh
ln -s docker-compose.dev-override.yml docker-compose.override.yml
docker-compose up --build
```
2. Run `docker-compose run --rm web python manage.py createsuperuser` -- now you can dev authenticate w/o SSO
1. Copy `.env.example` as `.env`
2. Have `docker compose` 2.0. You can identify it by having `docker compose` command instead of `docker-compose`.
3. Customize your `.env` for your specific usecase.
### Build & run
#### VSCode
```sh
docker-compose up --build
0. Setup environment variables
1. Get VSCode from [here](https://code.visualstudio.com/download), *CAN NOT* be VSCodium, as the extension is a microsoft binary which does not work with VSCodium.
2. Install [Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) extension
3. Clone the repository and open it with VSCode.
4. You should get a toast like this when re-opening directory with the cloned repository. ![Toast example](readme/toast-example.png 'Toast example')
1. If you don't get a toast, then use (CMD|Ctrl)+Shift+P to open actions menu and choose option **Rebuild Without Cache and Reopen in Container**. ![Command example](readme/command-example.png 'Command example')
5. Reopen the directory in container either via command or popup button.
6. Wait for the application and container to properly build.
1. Devcontainer's VSCode instance will be automatically configured with extensions to help your development process.
2. You might get a Toast telling you to re-open the directory due to Black not working properly. Do so for proper autoformatting support.
7. `manage.py migrate` will be run automatically after container creation, to make sure you have the latest migrations done on the development database without any need for interaction.
8. Run debug session with either command of "Start Debugging" (default hotkey F5), or with the Debug sidebar. ![Debug sidebar instructions](readme/debug-example.png 'Debug sidebar')
9. You should have automatically forwarded ports, so the only thing remaining is opening browser window with the url provided in terminal.
# if you need to reset built static files and/or postgres database:
docker-compose up --build --renew-anon-volumes
```
#### Everything else (docker)
### Troubleshooting
1. Run `docker compose up`. This will create a production-ready setup with gunicorn. out of the box.
- https://askubuntu.com/q/615394/413683
### Everything else (python)
## New docs (WIP):
1. Get python3
2. `pip install -r requirements.txt`
3. `python3 manage.py migrate`
4. `python3 manage.py collecstatic`
5. `python3 manage.py runserver 0.0.0.0:8000`
## New docs (WIP)
Spejstore is a simple inventory system made for Warsaw Hackerspace purposes. Includes some features very specific to hswaw requirements, which are:

View file

@ -2,7 +2,9 @@ version: "3"
services:
db:
image: postgres:15.4
restart: always
restart: unless-stopped
volumes:
- spejstore-db:/var/lib/postgresql/data
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
@ -16,13 +18,18 @@ services:
web:
build: .
restart: always
restart: unless-stopped
command: bash -c "python manage.py collectstatic --no-input --clear && python manage.py migrate && gunicorn --workers 1 --threads 4 -b 0.0.0.0:8000 --capture-output --error-logfile - --access-logfile - spejstore.wsgi:application"
volumes:
- .:/code
- /code/build_static
ports:
- "8000:8000"
env_file:
- .env
depends_on:
db:
condition: service_healthy
volumes:
spejstore-db:
external: false

BIN
readme/command-example.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
readme/debug-example.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

BIN
readme/toast-example.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB