Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ArangoDB: How to initialize the server language / license update #2449

Merged
merged 9 commits into from
Sep 17, 2024
40 changes: 28 additions & 12 deletions arangodb/content.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ ArangoDB runs everywhere: On-prem, in the cloud, and as a managed cloud service:

#### ArangoDB Documentation

- [Learn ArangoDB](https://www.arangodb.com/learn/)
- [Documentation](https://www.arangodb.com/docs/)
- [Learn ArangoDB](https://arangodb.com/learn/)
- [Documentation](https://docs.arangodb.com/)

## How to use this image

Expand All @@ -31,32 +31,48 @@ In order to start an ArangoDB instance, run:
unix> docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 -d --name arangodb-instance %%IMAGE%%
```

Will create and launch the %%IMAGE%% docker instance as background process. The Identifier of the process is printed. By default ArangoDB listen on port 8529 for request and the image includes `EXPOSE 8529`. If you link an application container it is automatically available in the linked container. See the following examples.
On macOS/ARM, the processor architecture chosen by default may be x86-64 (`linux/amd64`), which is not optimal. You can pass the `--platform` flag to the `docker run` command to specify the appropriate operating system and architecture for the container (`linux/arm64/v8`):
Simran-B marked this conversation as resolved.
Show resolved Hide resolved

In order to get the IP arango listens on, run:
```console
docker run --platform linux/arm64/v8 -p 8529:8529 -e ARANGO_RANDOM_ROOT_PASSWORD=1 arangodb-instance %%IMAGE%%
Simran-B marked this conversation as resolved.
Show resolved Hide resolved
```

This creates and launches the %%IMAGE%% Docker instance as a background process. The Identifier of the process is printed. By default, ArangoDB listens on port `8529` for request and the image includes `EXPOSE 8529`. If you link an application container it is automatically available in the linked container.

In order to get the IP ArangoDB listens on, run:

```console
unix> docker inspect --format '{{ .NetworkSettings.IPAddress }}' arangodb-instance
```

### Initialize the server language

When using Docker, you need to specify the language you want to initialize the server to on the first run in one of the following ways:

- Set the environment variable `LANG` to a locale in the `docker run` command, e.g. `-e LANG=sv` for a Swedish locale.

- Use an `arangod.conf` configuration file that sets a language and mount it into the container. For example, create a configuration file on your host system in which you set `icu-language = sv` at the top (before any `[section]`) and then mount the file over the default configuration file like `docker run -v /your-host-path/arangod.conf:/etc/arangodb3/arangod.conf ...`.

Note that you cannot set the language using only a startup option on the command-line, like `docker run ... %%IMAGE%% --icu-language sv`.

If you don't specify a language explicitly, the default is `en_US` up to ArangoDB v3.11 and `en_US_POSIX` from ArangoDB v3.12 onward.

### Using the instance

In order to use the running instance from an application, link the container:
To use the running instance from an application, link the container:

```console
unix> docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 --name my-app --link arangodb-instance:db-link %%IMAGE%%
```

This will use the instance with the name `arangodb-instance` and link it into the application container. The application container will contain environment variables
This uses the instance named `arangodb-instance` and links it into the application container. The application container contains environment variables, which can be used to access the database.

DB_LINK_PORT_8529_TCP=tcp://172.17.0.17:8529
DB_LINK_PORT_8529_TCP_ADDR=172.17.0.17
DB_LINK_PORT_8529_TCP_PORT=8529
DB_LINK_PORT_8529_TCP_PROTO=tcp
DB_LINK_NAME=/naughty_ardinghelli/db-link

These can be used to access the database.

### Exposing the port to the outside world

If you want to expose the port to the outside world, run:
Expand Down Expand Up @@ -118,7 +134,7 @@ Then use `docker exec` and the ID / name to run something inside of the existing
unix> docker exec -it jolly_joker arangosh
```

See more information about [Configuration](https://www.arangodb.com/docs/stable/administration-configuration.html)
For more information, see the ArangoDB documentation about [Configuration](https://docs.arangodb.com/stable/operations/administration/configuration/).

### Limiting resource utilization

Expand Down Expand Up @@ -149,7 +165,7 @@ ArangoDB supports two different storage engines from version 3.2 to 3.6. You can

ArangoDB uses the volume `/var/lib/arangodb3` as database directory to store the collection data and the volume `/var/lib/arangodb3-apps` as apps directory to store any extensions. These directories are marked as docker volumes.

See `docker inspect --format "{{ .Config.Volumes}}" arangodb` for all volumes.
See `docker inspect --format "{{ .Config.Volumes }}" %%IMAGE%%` for all volumes.

A good explanation about persistence and docker container can be found here: [Docker In-depth: Volumes](http://container42.com/2014/11/03/docker-indepth-volumes/), [Why Docker Data Containers are Good](https://medium.com/@ramangupta/why-docker-data-containers-are-good-589b3c6c749e)

Expand Down Expand Up @@ -186,12 +202,12 @@ If want to save a few bytes you can alternatively use [busybox](https://hub.dock
unix> docker run -d --name arangodb-persist -v /var/lib/arangodb3 busybox true
```

### Using as a base image
### Usage as a base image

If you are using the image as a base image please make sure to wrap any CMD in the [exec](https://docs.docker.com/reference/dockerfile/#cmd) form. Otherwise the default entrypoint will not do its bootstrapping work.

When deriving the image, you can control the instantiation via putting files into `/docker-entrypoint-initdb.d/`.

- `*.sh` - files ending with .sh will be run as a bash shellscript.
- `*.js` - files will be executed with arangosh. You can specify additional arangosh arguments via the `ARANGOSH_ARGS` environment variable.
- `dumps/` - in this directory you can place subdirectories containing database dumps generated using [arangodump](https://www.arangodb.com/docs/stable/programs-arangodump.html). They can be restored using [arangorestore](https://www.arangodb.com/docs/stable/programs-arangorestore.html).
- `dumps/` - in this directory you can place subdirectories containing database dumps generated using [arangodump](https://docs.arangodb.com/stable/components/tools/arangodump/). They can be restored using [arangorestore](https://docs.arangodb.com/stable/components/tools/arangorestore/).
8 changes: 7 additions & 1 deletion arangodb/license.md
Simran-B marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -1 +1,7 @@
[ArangoDB itself is licensed under the Apache License](https://github.com/arangodb/arangodb/blob/devel/LICENSE), but it contains [software of third parties under their respective licenses](https://github.com/arangodb/arangodb/blob/devel/LICENSES-OTHER-COMPONENTS.md).
The official Docker images of the ArangoDB Community Edition are governed by the [ArangoDB Community License](https://arangodb.com/2024/02/update-evolving-arangodbs-licensing-model-for-a-sustainable-future/). The use for commercial purposes is limited to a 100 GB on dataset size in production within a single cluster and a maximum of three clusters.

Simran-B marked this conversation as resolved.
Show resolved Hide resolved
The source code of the Community Edition is available under the [Business Source License 1.1 (BUSL-1.1)](https://github.com/arangodb/arangodb/blob/devel/LICENSE). Copying, modification, redistribution, non-commercial use, and commercial use in a non-production context are always allowed. Additionally, you can deploy BUSL-licensed ArangoDB source code for any purpose (including production) as long as you are not creating a commercial derivative work or offering, or are including it in a commercial product, application, or service. On the fourth anniversary of the first publicly available distribution of a specific version, the license changes to the permissive Apache 2.0 open-source license.

Simran-B marked this conversation as resolved.
Show resolved Hide resolved
Up to ArangoDB version 3.11, ArangoDB is licensed under the [Apache 2.0 License](https://github.com/arangodb/arangodb/blob/3.11/LICENSE).

ArangoDB contains [software of third parties under their respective licenses](https://github.com/arangodb/arangodb/blob/devel/LICENSES-OTHER-COMPONENTS.md).
Loading