docs(developer/setup/docker): refine

This commit is contained in:
jon r 2025-04-01 00:03:05 +02:00
parent 9b43aa7427
commit ac7dc665a5
1 changed files with 28 additions and 11 deletions

View File

@ -33,10 +33,13 @@ Funkwhale can be run in Docker containers for local development. You can work on
::::
6. Activate the pre-commit hook:
```sh
pre-commit install
```
7. Finally, initialise the environment:
```sh
cp .env.example .env
```
@ -50,16 +53,18 @@ Funkwhale provides a `compose.yml` file following the default file naming conven
To set up your Docker environment:
1. Create a network for federation support via the web proxy:
```sh
docker network create web
```
2. Then build the application containers. Run this command any time there are upstream changes or dependency changes to ensure you're up-to-date.
```sh
docker compose build
```
## Set up auxiliary services
## Set up network services
To support ActivityPub in the local development environment, we use a
combination of auxiliary services that provide DNS-based discovery, local email delivery and web/TLS termination. This also has the benefit that we can talk to
@ -85,9 +90,11 @@ The services bind to the following ports on the default Docker bridge network:
1. Create a wildcard certificate for the Common Name (CN) `funkwhale.test` and
the Subject Alternative Name (SAN) `*.funkwhale.test` which will be
installed into your system and browser trust stores with:
```sh
mkcert -install -cert-file compose/var/test.crt -key-file compose/var/test.key "funkwhale.test" "*.funkwhale.test"
```
It will be used by Træefik to secure connections, which is needed for
ActivityPub to work locally.
@ -317,9 +324,9 @@ Set up as many different projects as you need. Make sure the
`COMPOSE_PROJECT_NAME` and `VUE_PORT` variables are unique per instance.
```sh
export COMPOSE_PROJECT_NAME=node2
export COMPOSE_PROJECT_NAME=node1
# VUE_PORT this has to be unique for each instance
export VUE_PORT=1234
export VUE_PORT=8081
docker compose run --rm api funkwhale-manage fw users create --superuser
docker compose up -d
```
@ -332,23 +339,29 @@ You can access your project at `https://{COMPOSE_PROJECT_NAME}.funkwhale.test`.
You may as well address the different Compose projects by using ad hoc
environment variables:
```
COMPOSE_PROJECT_NAME=node1 VUE_PORT=1234 docker compose run --rm api funkwhale-manage fw users create --superuser
COMPOSE_PROJECT_NAME=node1 VUE_PORT=1234 docker compose up -d
```sh
COMPOSE_PROJECT_NAME=node1 VUE_PORT=8081 docker compose run --rm api funkwhale-manage fw users create --superuser
COMPOSE_PROJECT_NAME=node1 VUE_PORT=8081 docker compose up -d
```
The `node1` instance will be available at [https://node1.funkwhale.test](https://node1.funkwhale.test).
```
COMPOSE_PROJECT_NAME=node2 VUE_PORT=1235 docker compose run --rm api funkwhale-manage fw users create --superuser
COMPOSE_PROJECT_NAME=node2 VUE_PORT=1235 docker compose up -d
```sh
COMPOSE_PROJECT_NAME=node2 VUE_PORT=8082 docker compose run --rm api funkwhale-manage fw users create --superuser
COMPOSE_PROJECT_NAME=node2 VUE_PORT=8082 docker compose up -d
```
The `node2` instance will be available at [https://node2.funkwhale.test](https://node2.funkwhale.test).
Proceed freely with different sets of values for `COMPOSE_PROJECT_NAME` and
Proceed freely with different sets of non-overlapping values for `COMPOSE_PROJECT_NAME` and
`VUE_PORT`.
As a rule of thumb, remember to:
- Prepend `COMPOSE_PROJECT_NAME=node1 VUE_PORT=8081` to the lifecycle commands `up` and `run` to execute containers of additional instances.
- Prepend `COMPOSE_PROJECT_NAME=node1` to any other `docker compose` command to work with the indicated instance.
By example, this mechanic also applies to the [set up of local data for development](#set-up-local-data-for-development) above.
:::
::::{tab-set}
@ -422,7 +435,11 @@ Fallback ports are available for the documentation at
[http://localhost:8002/](http://localhost:8002/) and for the UI component library at [http://localhost:8003/](http://localhost:8003/).
Maintain their life cycle with similar commands to those used to
[set up auxiliary services (point 2.)](#set-up-auxiliary-services).
[set up network services (point 2.)](#set-up-network-services).
The documentation is then accessible at <https://docs.funkwhale.test>. The OpenAPI schema is available at <https://openapi.funkwhale.test>. The UI component library will be served at <https://ui.funkwhale.test>.
Fallback ports are available for the documentation at <http://localhost:8001/>, for the OpenAPI schema at <http://localhost:8002/> and for the UI component library at <http://localhost:8003/>.
## Running the test suites