container-server/README.md

65 lines
1.9 KiB
Markdown
Raw Normal View History

# Containered Server
Private server based on containers and compose
2024-07-07 17:14:30 +02:00
## Disclaimer:
2024-09-03 23:27:34 +02:00
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
2024-07-07 17:14:30 +02:00
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
## 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
2020-02-04 19:05:07 +01:00
## Data Persistence
All data SHALL BE stored in `$BASE_DIR` (defaults to `/srv`), one subfolder per service.
2020-09-22 23:37:45 +02:00
## Secrets & Configuration
Copy from `.env.sample` and fill in your values.
2020-02-04 19:05:07 +01:00
## Deploy
```sh
2024-07-07 17:20:29 +02:00
./task compose:up
```
2020-09-22 23:37:45 +02:00
List other tasks
```sh
2020-09-22 23:37:45 +02:00
./task -l
2020-02-04 19:05:07 +01:00
```
## 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).