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: 6. Activate the pre-commit hook:
```sh ```sh
pre-commit install pre-commit install
``` ```
7. Finally, initialise the environment: 7. Finally, initialise the environment:
```sh ```sh
cp .env.example .env 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: To set up your Docker environment:
1. Create a network for federation support via the web proxy: 1. Create a network for federation support via the web proxy:
```sh ```sh
docker network create web 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. 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 ```sh
docker compose build docker compose build
``` ```
## Set up auxiliary services ## Set up network services
To support ActivityPub in the local development environment, we use a 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 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 1. Create a wildcard certificate for the Common Name (CN) `funkwhale.test` and
the Subject Alternative Name (SAN) `*.funkwhale.test` which will be the Subject Alternative Name (SAN) `*.funkwhale.test` which will be
installed into your system and browser trust stores with: installed into your system and browser trust stores with:
```sh ```sh
mkcert -install -cert-file compose/var/test.crt -key-file compose/var/test.key "funkwhale.test" "*.funkwhale.test" 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 It will be used by Træefik to secure connections, which is needed for
ActivityPub to work locally. 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. `COMPOSE_PROJECT_NAME` and `VUE_PORT` variables are unique per instance.
```sh ```sh
export COMPOSE_PROJECT_NAME=node2 export COMPOSE_PROJECT_NAME=node1
# VUE_PORT this has to be unique for each instance # 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 run --rm api funkwhale-manage fw users create --superuser
docker compose up -d 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 You may as well address the different Compose projects by using ad hoc
environment variables: environment variables:
``` ```sh
COMPOSE_PROJECT_NAME=node1 VUE_PORT=1234 docker compose run --rm api funkwhale-manage fw users create --superuser COMPOSE_PROJECT_NAME=node1 VUE_PORT=8081 docker compose run --rm api funkwhale-manage fw users create --superuser
COMPOSE_PROJECT_NAME=node1 VUE_PORT=1234 docker compose up -d 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). The `node1` instance will be available at [https://node1.funkwhale.test](https://node1.funkwhale.test).
``` ```sh
COMPOSE_PROJECT_NAME=node2 VUE_PORT=1235 docker compose run --rm api funkwhale-manage fw users create --superuser COMPOSE_PROJECT_NAME=node2 VUE_PORT=8082 docker compose run --rm api funkwhale-manage fw users create --superuser
COMPOSE_PROJECT_NAME=node2 VUE_PORT=1235 docker compose up -d 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). 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`. `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} ::::{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/). [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 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 ## Running the test suites