container-server/README.md

54 lines
1.4 KiB
Markdown

# Containered Server
Private server based on containers and compose
## Repo Structure
- `./services` Service definitions
One subfolder per service with:
- `docker-compose.yml` for this service and its direct dependencies (e.g. db)
- Additional config files, possibly as template (see below)
- `./setup` Host setup
Setup information about a possible alpine host system
- `./tasks` Task definitions
- `common.yml`: Base tasks used by other tasks
- `compose.yml`: Container related tasks e.g. starting, updating, or reading logs
- `hot.yml`: Tasks related to host system maintenance
- `services.yml`: Tasks for specific services
## Requirements
- `envsubst`, most likely via gettext package. Refer to your distros docs.
- docker
- docker-compose
## Data Persistence
All data SHALL BE stored in `$BASE_DIR` (defaults to `/srv`), one subfolder per service.
## Secrets & Configuration
Copy from `.env.sample` and fill in your values.
## Deploy
```sh
./task pod:up
```
List other tasks
```sh
./task -l
```
## Templating
Filename pattern: `*.template.*`
Files matching the pattern are copied with the ".template." infix removed (e.g. forgejo.template.ini -> forgejo.ini).
Variables are replaced using shell substitution syntax (`${VARIABLE_NAME_HERE}`) using the current environment and values from `.env`.
## Host Setup
A possible alpine based host setup is described in [alpine-setup](./setup/alpine-setup.md).