Skip to content

Commit

Permalink
use compose.yml
Browse files Browse the repository at this point in the history
  • Loading branch information
Your Name committed Oct 5, 2023
1 parent 80a52fd commit 02bc2ff
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 10 deletions.
3 changes: 2 additions & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,10 @@
.gitignore
.pre-commit-config.yaml
__pycache__
/compose.yml
/compose.override.yml
/Dockerfile
/doc
/docker-compose.yml
/media
/static
/test_data
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion doc/development.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ Note:
- Python virtual environments inside docker image, which are `/neodb-venv` and `/takahe-venv`, will be used by default. They can be changed to different locations with `TAKAHE_VENV` and `NEODB_VENV` if needed, usually in a case of development code using a package not in docker venv.
- Some packages inside python virtual environments are platform dependent, so mount venv built by macOS host into the Linux container will likely not work.
- Python servers are launched as `app` user, who has no write access to anywhere except /tmp and media path, that's by design.
- Database/redis used in the container cluster are not accessible outside, which is by design. Querying them can be done by either apt update/install client packages in `dev-root` or `root` container, or a modified `docker-compose.yml` with `ports` section uncommented.
- Database/redis used in the container cluster are not accessible outside, which is by design. Querying them can be done by either apt update/install client packages in `dev-root` or `root` container, or create `compose.override.yml` to uncomment `ports` section.

To run local unit tests, use `docker compose run dev-shell neodb-manage test`

Expand Down
16 changes: 9 additions & 7 deletions doc/install-docker.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ Run NeoDB in Docker
===================

## Overview
For small and medium NeoDB instances, it's recommended to deploy as a local container cluster with Docker Compose. If you are running a large instance, please see the bottom of doc for some tips.
For small and medium NeoDB instances, it's recommended to deploy as a local container cluster with Docker Compose. To run a large instance, please see the bottom of doc for some tips.

```mermaid
flowchart TB
web[[Your reverse proxy server with SSL]] --- neodb-nginx[nginx listening on localhost:8000]
subgraph Containers managed by docker-compose
subgraph Containers managed by compose.yml
neodb-nginx --- neodb-web
neodb-nginx --- takahe-web
neodb-worker --- typesense[(typesense)]
Expand Down Expand Up @@ -44,7 +44,7 @@ $ sudo usermod -aG docker neouser

## Get configuration files
- create a folder for configuration, eg ~/neodb/config
- grab `docker-compose.yml` and `neodb.env.example` from source code
- grab `compose.yml` and `neodb.env.example` from source code
- rename `neodb.env.example` to `.env`

## Set up .env file and www root
Expand All @@ -61,7 +61,7 @@ Optionally, `robots.txt` and `logo.png` may be placed under `$NEODB_DATA/www-roo
See `neodb.env.example` and `configuration.md` for more options

## Start docker
in the folder with `docker-compose.yml` and `neodb.env`, execute as the user you just created:
in the folder with `compose.yml` and `neodb.env`, execute as the user you just created:
```
$ docker compose pull
$ docker compose --profile production up -d
Expand All @@ -85,12 +85,12 @@ NeoDB requires `https` by default. Although `http` may be technically possible,

## Update NeoDB

Check the release notes, update `docker-compose.yml` and `.env` as instructed. pull the image
Check the release notes, update `compose.yml` and `.env` as instructed. pull the image
```
docker compose pull
```

If there's no change in `docker-compose.yml`, restart only NeoDB services:
If there's no change in `compose.yml`, restart only NeoDB services:
```
$ docker compose stop neodb-web neodb-worker neodb-worker-extra takahe-web takahe-stator nginx
$ docker compose --profile production up -d
Expand All @@ -102,6 +102,8 @@ $ docker compose down
$ docker compose --profile production up -d
```

If there is `compose.override.yml` in the directory, make sure it's compatible with the updated `compose.yml`.

## Troubleshooting

- `docker compose ps` to see if any service is down, (btw it's normal that `migration` is in `Exit 0` state)
Expand All @@ -114,6 +116,6 @@ It's possible to run multiple clusters in one host server, as long as `NEODB_SIT

## Scaling

If you are running a high-traffic instance, spin up `NEODB_WEB_WORKER_NUM`, `TAKAHE_WEB_WORKER_NUM`, `TAKAHE_STATOR_CONCURRENCY` and `TAKAHE_STATOR_CONCURRENCY_PER_MODEL` as long as your host server can handle them.
For high-traffic instance, spin up `NEODB_WEB_WORKER_NUM`, `TAKAHE_WEB_WORKER_NUM`, `TAKAHE_STATOR_CONCURRENCY` and `TAKAHE_STATOR_CONCURRENCY_PER_MODEL` as long as the host server can handle them.

Further scaling up with multiple nodes (e.g. via Kubernetes) is beyond the scope of this document, but consider run db/redis/typesense separately, and then duplicate web/worker/stator containers as long as connections and mounts are properly configured; `migration` only runs once when start or upgrade, it should be kept that way.
2 changes: 1 addition & 1 deletion neodb.env.example
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# NEODB Configuration

# copy along with docker-compose.yml, rename this file to .env
# copy along with compose.yml, rename this file to .env

# Change these before start the instance for the first time!!
NEODB_SECRET_KEY=change_me
Expand Down

0 comments on commit 02bc2ff

Please sign in to comment.