From 66ba97afb1b8d7fc1eb51a3900754e982cc01ac0 Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Tue, 13 Jan 2015 16:32:54 +0100 Subject: [PATCH 01/41] remove intermediate files --- scripts/install.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/install.sh b/scripts/install.sh index fa5242fe..3b19c38b 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -36,6 +36,8 @@ if test "$local" = "yes"; then apt-key add - < /install/Release.key dpkg -i /install/arangodb_${VERSION}_amd64.deb + rm -rf /install + # normal install else From 89025ddeabbdafb3f9b40f1b7df52f7835697658 Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Wed, 14 Jan 2015 17:56:55 +0100 Subject: [PATCH 02/41] always update system --- scripts/install.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/scripts/install.sh b/scripts/install.sh index 3b19c38b..6abdcb9c 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -29,6 +29,15 @@ if test -d /install; then local=yes fi +# non interactive +echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections + +# install system deps +echo " ---> Updating ubuntu" +apt-get -y -qq --force-yes update +apt-get -y -qq --force-yes install wget +apt-get -y -qq install apt-transport-https + # install from local source if test "$local" = "yes"; then @@ -41,15 +50,6 @@ if test "$local" = "yes"; then # normal install else - # non interactive - echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections - - # install system deps - echo " ---> Updating ubuntu" - apt-get -y -qq --force-yes update - apt-get -y -qq --force-yes install wget - apt-get -y -qq install apt-transport-https - # install arangodb echo " ---> Installing arangodb package" cd /tmp From c439438cb8ad05c9e89bc3e593b9cbc503cdc702 Mon Sep 17 00:00:00 2001 From: Max Neunhoeffer Date: Tue, 17 Mar 2015 23:15:44 -0700 Subject: [PATCH 03/41] Some additional scripts for cluster operation. --- Dockerfile | 2 +- scripts/discover.js | 89 ++++++++++++++++++++++++++ scripts/init_agency.js | 140 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 230 insertions(+), 1 deletion(-) create mode 100755 scripts/discover.js create mode 100755 scripts/init_agency.js diff --git a/Dockerfile b/Dockerfile index de1077a4..4a1f92b3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ FROM ubuntu:14.04 -MAINTAINER Frank Celler +MAINTAINER Max Neunhoeffer # for local installation, uncomment # ADD ./arangodb /install diff --git a/scripts/discover.js b/scripts/discover.js new file mode 100755 index 00000000..baf8b2d4 --- /dev/null +++ b/scripts/discover.js @@ -0,0 +1,89 @@ +/*jshint strict: false, -W083 */ +/*global require */ + +// Discover a new server and give it a role + +var download = require("internal").download; +var print = require("internal").print; +var wait = require("internal").wait; +var highestDBServer = 0; +var highestCoordinator = 0; + +var result; +var body; +var nodes; +var newservers; +var oldservers; + +while (true) { + result = download("http://agency:4001/v2/keys/arango/Current/NewServers","",{"method":"GET"}); + if (result.code !== 200) { + print("Received error from agency: ", result); + break; + } + body = JSON.parse(result.body); + nodes = body.node.nodes; + if (nodes === undefined) { + newservers = []; + } + else { + newservers = nodes.map(function(x) { return x.key.substr(27); }); + } + print("New:", newservers); + result = download("http://agency:4001/v2/keys/arango/Target/MapLocalToID","",{"method":"GET"}); + if (result.code !== 200) { + print("Received error from agency: ", result); + break; + } + body = JSON.parse(result.body); + nodes = body.node.nodes; + if (nodes === undefined) { + oldservers = []; + } + else { + oldservers = nodes.map(function(x) { return x.key.substr(28); }); + } + print("Old:", oldservers); + + var i; + for (i = 0; i < newservers.length; i++) { + if (oldservers.indexOf(newservers[i]) === -1) { + print("Configuring new server", newservers[i]); + var server = newservers[i]; + var isDB = false; + if (server.substr(0, 9) === "dbserver:") { + isDB = true; + server = server.substr(9); + highestDBServer += 1; + } + else if (server.substr(0, 12) === "coordinator:") { + isDB = false; + server = server.substr(12); + highestCoordinator += 1; + } + else { + continue; + } + var entity = isDB ? "DBServers" : "Coordinators"; + var serverName = isDB ? "DBServer"+highestDBServer + : "Coordinator"+highestCoordinator; + var url = "http://agency:4001/v2/keys/arango/Plan/" + entity + "/" + + serverName; + var headers = { "Content-Type" : "application/x-www-form-urlencoded" }; + var res = download(url, "value="+encodeURIComponent('"none"'), + { "method": "PUT", "headers": headers, + "followRedirects": true }); + print("Result of first PUT: ", JSON.stringify(res)); + url = "http://agency:4001/v2/keys/arango/Target/MapLocalToID/"+newservers[i]; + body = "value=" + encodeURIComponent(JSON.stringify( + {"endpoint":"tcp://"+server, "ID":serverName})); + print(url); + print(body); + var res = download(url, body, { "method": "PUT", "headers" : headers, + "followRedirects": true }); + print("Result of second PUT: ", JSON.stringify(res)); + } + } + + wait(3); +} diff --git a/scripts/init_agency.js b/scripts/init_agency.js new file mode 100755 index 00000000..e335b398 --- /dev/null +++ b/scripts/init_agency.js @@ -0,0 +1,140 @@ +/*jshint strict: false */ +/*global require*/ +var agencyData = { + "arango" : { + "Sync" : { + "LatestID" : "\"1\"", + "Problems" : {}, + "UserVersion" : "\"1\"", + "ServerStates" : {}, + "HeartbeatIntervalMs" : "1000", + "Commands" : {} + }, + "Current" : { + "Collections" : { + "_system" : {} + }, + "Version" : "\"1\"", + "ShardsCopied" : {}, + "NewServers" : {}, + "Coordinators" : {}, + "Lock" : "\"UNLOCKED\"", + "DBservers" : {}, + "ServersRegistered" : { + "Version" : "\"1\"" + }, + "Databases" : { + "_system" : { + "id" : "\"1\"", + "name" : "\"name\"" + } + } + }, + "Plan" : { + "Coordinators" : { + }, + "Databases" : { + "_system" : "{\"name\":\"_system\", \"id\":\"1\"}" + }, + "DBServers" : { + }, + "Version" : "\"1\"", + "Collections" : { + "_system" : { + } + }, + "Lock" : "\"UNLOCKED\"" + }, + "Launchers" : { + }, + "Target" : { + "Coordinators" : { + }, + "MapIDToEndpoint" : { + }, + "Collections" : { + "_system" : {} + }, + "Version" : "\"1\"", + "MapLocalToID" : {}, + "Databases" : { + "_system" : "{\"name\":\"_system\", \"id\":\"1\"}" + }, + "DBServers" : { + }, + "Lock" : "\"UNLOCKED\"" + } + } +}; + +var download = require("internal").download; +var print = require("internal").print; +var wait = require("internal").wait; + +function encode (st) { + var st2 = ""; + var i; + for (i = 0; i < st.length; i++) { + if (st[i] === "_") { + st2 += "@U"; + } + else if (st[i] === "@") { + st2 += "@@"; + } + else { + st2 += st[i]; + } + } + return encodeURIComponent(st2); +} + +function sendToAgency (agencyURL, path, obj) { + var res; + var body; + + print("Sending",path," to agency..."); + if (typeof obj === "string") { + var count = 0; + while (count++ <= 2) { + body = "value="+encodeURIComponent(obj); + print("Body:", body); + print("URL:", agencyURL+path); + res = download(agencyURL+path,body, + {"method":"PUT", "followRedirects": true, + "headers": { "Content-Type": "application/x-www-form-urlencoded"}}); + if (res.code === 201 || res.code === 200) { + return true; + } + wait(3); // wait 3 seconds before trying again + } + return res; + } + if (typeof obj !== "object") { + return "Strange object found: not a string or object"; + } + var keys = Object.keys(obj); + var i; + if (keys.length !== 0) { + for (i = 0; i < keys.length; i++) { + res = sendToAgency (agencyURL, path+encode(keys[i])+"/", obj[keys[i]]); + if (res !== true) { + return res; + } + } + return true; + } + else { + body = "dir=true"; + res = download(agencyURL+path, body, + {"method": "PUT", "followRedirects": true, + "headers": { "Content-Type": "application/x-www-form-urlencoded"}}); + if (res.code !== 201 && res.code !== 200) { + return res; + } + return true; + } +} + +print("Starting to send data to Agency..."); +var res = sendToAgency("http://agency:4001/v2/keys", "/", agencyData); +print("Result:",res); From 68e5c04ca45ac664bc85f170f1d5fbf64e888d59 Mon Sep 17 00:00:00 2001 From: Max Neunhoeffer Date: Tue, 31 Mar 2015 15:35:25 +0200 Subject: [PATCH 04/41] Leave Frank as maintainer. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 4a1f92b3..de1077a4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ FROM ubuntu:14.04 -MAINTAINER Max Neunhoeffer +MAINTAINER Frank Celler # for local installation, uncomment # ADD ./arangodb /install From d3cb6353ae990ed4ef82d77ec1a189fa2639bd0b Mon Sep 17 00:00:00 2001 From: Max Neunhoeffer Date: Tue, 31 Mar 2015 15:36:14 +0200 Subject: [PATCH 05/41] I am the maintainer in this branch. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index de1077a4..4a1f92b3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ FROM ubuntu:14.04 -MAINTAINER Frank Celler +MAINTAINER Max Neunhoeffer # for local installation, uncomment # ADD ./arangodb /install From 071effad4bc47d417f05157a3e1cf7fd7cbca467 Mon Sep 17 00:00:00 2001 From: Max Neunhoeffer Date: Tue, 31 Mar 2015 15:36:48 +0200 Subject: [PATCH 06/41] Revert "I am the maintainer in this branch." This reverts commit d3cb6353ae990ed4ef82d77ec1a189fa2639bd0b. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 4a1f92b3..de1077a4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ FROM ubuntu:14.04 -MAINTAINER Max Neunhoeffer +MAINTAINER Frank Celler # for local installation, uncomment # ADD ./arangodb /install From 1ba9029564d97e6fed0bb35d389d40a595e28719 Mon Sep 17 00:00:00 2001 From: Frank Mayer Date: Wed, 1 Apr 2015 15:21:41 +0300 Subject: [PATCH 07/41] Update HELP.md very minor spelling fix --- HELP.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HELP.md b/HELP.md index 18145b07..5cd13db0 100644 --- a/HELP.md +++ b/HELP.md @@ -10,7 +10,7 @@ start in development mode: pipe the log file to standard out: docker run -e verbose=1 arangodb -fire up a bash after starting the serber: +fire up a bash after starting the server: docker run -e console=1 -it arangodb show all options: From d300e8e06235fa3144d8d3f6028b665c65147a6b Mon Sep 17 00:00:00 2001 From: Thomas Schmidts Date: Mon, 20 Apr 2015 15:57:50 +0200 Subject: [PATCH 08/41] Added files and made some changes to create an official docker repo --- LICENSE | 2 +- README-short.txt | 4 ++ README.md | 119 +++++++++++++++++++++++++++++++++++------------ logo.png | Bin 0 -> 10467 bytes 4 files changed, 95 insertions(+), 30 deletions(-) create mode 100644 README-short.txt create mode 100644 logo.png diff --git a/LICENSE b/LICENSE index 5c304d1a..267b169b 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright {yyyy} {name of copyright owner} + Copyright 2015 ArangoDB GmbH Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/README-short.txt b/README-short.txt new file mode 100644 index 00000000..64e81fe9 --- /dev/null +++ b/README-short.txt @@ -0,0 +1,4 @@ +# What is ArangoDB? + +A distributed open-source database with a flexible data model for documents, +graphs, and key-values. diff --git a/README.md b/README.md index 3096e96f..934f4a7f 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,36 @@ -# ArangoDB +#Supported tags and respective `Dockerfile` links -A distributed open-source database with a flexible data model for documents, -graphs, and key-values. Build high performance applications using a convenient -sql-like query language or JavaScript extensions. +- [`2.4` (Dockerfile)](https://github.com/arangodb/arangodb-docker/blob/v2.4.0-alpha1/Dockerfile) +- [`2.3.2` (Dockerfile)](https://github.com/arangodb/arangodb-docker/blob/v2.3.2/Dockerfile) +- [`2.3.1` (Dockerfile)](https://github.com/arangodb/arangodb-docker/blob/v2.3.1/Dockerfile) +- [`2.3.0` (Dockerfile)](https://github.com/arangodb/arangodb-docker/blob/v2.3.0/Dockerfile) +# What is ArangoDB? +ArangoDB is a multi-model, open-source database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions. Use ACID transactions if you require them. Scale horizontally and vertically with a few mouse clicks. + +ArangoDB is Polyglot Persistence done right. The supported data models can be mixed in queries and allow ArangoDB to be the aggregation point for the data request you have in mind. + +Key Features in ArangoDB +------------------------ + +**Multi-Model** +Documents, graphs and key-value pairs — model your data as you see fit for your application. + +**Joins** +Conveniently join what belongs together for flexible ad-hoc querying, less data redundancy. + +**Transactions** +Easy application development keeping your data consistent and safe. No hassle in your client. + +Here is an AQL query that makes use of all those features: +![AQL Query Example](https://www.arangodb.com/wp-content/uploads/2015/03/query_join.png) + +Joins and Transactions are key features for flexible, secure data designs, widely used in RDBMSs that you won’t want to miss in NoSQL products. You decide how and when to use Joins and strong consistency guarantees, keeping all the power for scaling and performance as choice. + +Furthermore, ArangoDB offers a microservice framework called [Foxx](https://www.arangodb.com/foxx) to build your own Rest API with a few lines of code. + +Microservice Example +![Microservice Example](https://www.arangodb.com/wp-content/uploads/2015/03/microservice.png) ## Usage @@ -12,35 +39,43 @@ sql-like query language or JavaScript extensions. In order to start an ArangoDB instance run - unix> docker run --name arangodb-instance -d arangodb/arangodb +``` +unix> docker run --name arangodb-instance -d arangodb/arangodb +``` By default ArangoDB listen on port 8529 for request and the image includes -`EXPOST 8529`. If you link an application container, it is automatically +`EXPOST 8529`. If you link an application container it is automatically available in the linked container. See the following examples. ### Using the instance In order to use the running instance from an application, link the container - unix> docker run --name my-app --link arangodb-instance:db-link arangodb/arangodb - -This will use the instanced with the name `arangodb-instance` and link it into +``` +unix> docker run --name my-app --link arangodb-instance:db-link arangodb/arangodb +``` + +This will use the instance with the name `arangodb-instance` and link it into the application container. The application container will contain environment variables - 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 +``` +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 +``` -which can be used to access the database. +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 - unix> docker run -p 8529:8529 -d arangodb/arangodb +``` +unix> docker run -p 8529:8529 -d arangodb/arangodb +``` ArangoDB listen on port 8529 for request and the image includes `EXPOST 8529`. The `-p 8529:8529` exposes this port on the host. @@ -49,13 +84,15 @@ ArangoDB listen on port 8529 for request and the image includes `EXPOST In order to get a list of supported options, run - unix> docker run -e help=1 arangodb/arangodb +``` +unix> docker run -e help=1 arangodb/arangodb +``` ## Persistent Data ArangoDB use the volume `/data` as database directory to store the collection data and the volume `/apps` as apps directory to store any extensions. These -directory are marked as docker volumes. +directories are marked as docker volumes. See `docker run -e help=1 arangodb` for all volumes. @@ -69,10 +106,12 @@ You can map the container's volumes to a directory on the host, so that the data is kept between runs of the container. This path `/tmp/arangodb` is in general not the correct place to store you persistent files - it is just an example! - unix> mkdir /tmp/arangodb - unix> docker run -p 8529:8529 -d \ - -v /tmp/arangodb:/data \ - arangodb +``` +unix> mkdir /tmp/arangodb +unix> docker run -p 8529:8529 -d \ + -v /tmp/arangodb:/data \ + arangodb +``` This will use the `/tmp/arangodb` directory of the host as database directory for ArangoDB inside the container. @@ -81,19 +120,25 @@ for ArangoDB inside the container. Alternatively you can create a container holding the data. - unix> docker run -d --name arangodb-persist -v /data ubuntu:14.04 true +``` +unix> docker run -d --name arangodb-persist -v /data ubuntu:14.04 true +``` And use this data container in your ArangoDB container. - unix> docker run --volumes-from arangodb-persist -p 8529:8529 arangodb +``` +unix> docker run --volumes-from arangodb-persist -p 8529:8529 arangodb +``` -If want to save a few bytes for you can alternatively use +If want to save a few bytes you can alternatively use [tianon/true](https://registry.hub.docker.com/u/tianon/true/) or [progrium/busybox](https://registry.hub.docker.com/u/progrium/busybox/) for creating the volume only containers. For example - unix> docker run -d --name arangodb-persist -v /data tianon/true true +``` +unix> docker run -d --name arangodb-persist -v /data tianon/true true +``` # Images @@ -102,13 +147,29 @@ for creating the volume only containers. For example Simple clone the repository and execute the following command in the `arangodb-docker` folder - unix> docker build -t arangodb . +``` +unix> docker build -t arangodb . +``` + +This will create an image named `arangodb`. + +# User Feedback + +## Issues + +If you have any problems with or questions about this image, please contact us through a [GitHub issue](https://github.com/arangodb/arangodb-docker/issues). + +You can also reach many of the official image maintainers via the `#docker-library` IRC channel on [Freenode](https://freenode.net). + +## Contributing + +You are invited to contribute new features, fixes, or updates, large or small; we are always thrilled to receive pull requests, and do our best to process them as fast as we can. -This will create a image named `arangodb`. +Before you start to code, we recommend discussing your plans through a [GitHub issue](https://github.com/arangodb/arangodb-docker/issues), especially for more ambitious contributions. This gives other contributors a chance to point you in the right direction, give you feedback on your design, and help you find out if someone else is working on the same thing. # LICENSE -Copyright (c) 2014 ArangoDB GmbH, published under Apache V2.0 License. +Copyright (c) 2015 ArangoDB GmbH, published under Apache V2.0 License. Based on diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..daa1d3ff55abf319874c5de7eeabae85e00328a5 GIT binary patch literal 10467 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 Ku23!q4*DPX-4vDp literal 0 HcmV?d00001 From 3206c1b08d8addd05f3b4654f2f3e93ac44105c5 Mon Sep 17 00:00:00 2001 From: ifcologne Date: Mon, 20 Apr 2015 19:02:48 +0200 Subject: [PATCH 09/41] one liner --- README-short.txt | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/README-short.txt b/README-short.txt index 64e81fe9..c6abb88f 100644 --- a/README-short.txt +++ b/README-short.txt @@ -1,4 +1 @@ -# What is ArangoDB? - -A distributed open-source database with a flexible data model for documents, -graphs, and key-values. +ArangoDB - a distributed open-source database with a flexible data model for documents, graphs, and key-values. From f94820a6972ab14310d7701e9370f154703cdce6 Mon Sep 17 00:00:00 2001 From: ifcologne Date: Mon, 20 Apr 2015 20:40:26 +0200 Subject: [PATCH 10/41] Shortened Readme, added documentation links. --- README.md | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 934f4a7f..acf235f9 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,9 @@ -#Supported tags and respective `Dockerfile` links - -- [`2.4` (Dockerfile)](https://github.com/arangodb/arangodb-docker/blob/v2.4.0-alpha1/Dockerfile) -- [`2.3.2` (Dockerfile)](https://github.com/arangodb/arangodb-docker/blob/v2.3.2/Dockerfile) -- [`2.3.1` (Dockerfile)](https://github.com/arangodb/arangodb-docker/blob/v2.3.1/Dockerfile) -- [`2.3.0` (Dockerfile)](https://github.com/arangodb/arangodb-docker/blob/v2.3.0/Dockerfile) - -# What is ArangoDB? +# Overview / Links ArangoDB is a multi-model, open-source database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions. Use ACID transactions if you require them. Scale horizontally and vertically with a few mouse clicks. -ArangoDB is Polyglot Persistence done right. The supported data models can be mixed in queries and allow ArangoDB to be the aggregation point for the data request you have in mind. +The supported data models can be mixed in queries and allow ArangoDB to be the aggregation point for the data request you have in mind. + +Dockerfile: [`Latest` (Dockerfile)](https://github.com/arangodb/arangodb-docker/blob/master/Dockerfile) Key Features in ArangoDB ------------------------ @@ -22,20 +17,17 @@ Conveniently join what belongs together for flexible ad-hoc querying, less data **Transactions** Easy application development keeping your data consistent and safe. No hassle in your client. -Here is an AQL query that makes use of all those features: -![AQL Query Example](https://www.arangodb.com/wp-content/uploads/2015/03/query_join.png) - Joins and Transactions are key features for flexible, secure data designs, widely used in RDBMSs that you won’t want to miss in NoSQL products. You decide how and when to use Joins and strong consistency guarantees, keeping all the power for scaling and performance as choice. Furthermore, ArangoDB offers a microservice framework called [Foxx](https://www.arangodb.com/foxx) to build your own Rest API with a few lines of code. -Microservice Example -![Microservice Example](https://www.arangodb.com/wp-content/uploads/2015/03/microservice.png) - +ArangoDB Documentation +- [ArangoDB Documentation](https://www.arangodb.com/documentation) +- [ArangoDB Tutorials](https://www.arangodb.com/tutorials) ## Usage -### Start a ArangoDB instance +### Start an ArangoDB instance In order to start an ArangoDB instance run From bf989c55bb1f708947755f9a331db9d8e3a63b8f Mon Sep 17 00:00:00 2001 From: Wilfried Goesgens Date: Tue, 5 May 2015 15:48:56 +0200 Subject: [PATCH 11/41] describe howto run daemonized, and howto fetch the IP. --- README.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index acf235f9..2b2fffea 100644 --- a/README.md +++ b/README.md @@ -32,13 +32,23 @@ ArangoDB Documentation In order to start an ArangoDB instance run ``` -unix> docker run --name arangodb-instance -d arangodb/arangodb +unix> docker run -d --name arangodb-instance -d arangodb/arangodb ``` +Will create and launch the arangodb 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 `EXPOST 8529`. If you link an application container it is automatically available in the linked container. See the following examples. +In order to get the IP arango listens on run: + +``` +docker inspect --format '{{ .NetworkSettings.IPAddress }}' +``` + +(where is the return string of the previous start command) + ### Using the instance In order to use the running instance from an application, link the container @@ -151,7 +161,7 @@ This will create an image named `arangodb`. If you have any problems with or questions about this image, please contact us through a [GitHub issue](https://github.com/arangodb/arangodb-docker/issues). -You can also reach many of the official image maintainers via the `#docker-library` IRC channel on [Freenode](https://freenode.net). +You can also reach many of the official image maintainers via the `#docker-library` IRC channel on [Freenode](https://freenode.net) - ArangoDB specific questions can be asked in `#arangodb`. ## Contributing From 3c14e1784c28af5283642fb39fb5e169fa46f38f Mon Sep 17 00:00:00 2001 From: Wilfried Goesgens Date: Thu, 7 May 2015 17:10:21 +0200 Subject: [PATCH 12/41] Move commandline arguments into the docker configuration; remove deprecated commandline debug options --- scripts/start.sh | 26 +++----------------------- 1 file changed, 3 insertions(+), 23 deletions(-) diff --git a/scripts/start.sh b/scripts/start.sh index 66d2ec83..5af40246 100755 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -14,12 +14,6 @@ fi echo echo "starting ArangoDB in stand-alone mode" -# start in development mode -if test "$development" = "1"; then - D1="--javascript.dev-app-path" - D2="/apps-dev" -fi - # fix permissions touch /logs/arangodb.log rm -rf /tmp/arangodb @@ -35,25 +29,11 @@ fi # start server if test "$console" = "1"; then /usr/sbin/arangod \ - --uid arangodb \ - --gid arangodb \ - --database.directory /data \ - --javascript.app-path /apps \ - --log.file /logs/arangodb.log \ - --temp-path /tmp/arangodb \ - --server.endpoint tcp://0.0.0.0:8529/ \ - $D1 $D2 \ + --configuration /etc/arangodb/arangod-docker.conf \ "$@" & /bin/bash else - exec /usr/sbin/arangod \ - --uid arangodb \ - --gid arangodb \ - --database.directory /data \ - --javascript.app-path /apps \ - --log.file /logs/arangodb.log \ - --temp-path /tmp/arangodb \ - --server.endpoint tcp://0.0.0.0:8529/ \ - $D1 $D2 \ + /usr/sbin/arangod \ + --configuration /etc/arangodb/arangod-docker.conf \ "$@" fi From 10aa799ae3407e03329b0295b9455a41e1e21674 Mon Sep 17 00:00:00 2001 From: Wilfried Goesgens Date: Mon, 11 May 2015 13:30:11 +0200 Subject: [PATCH 13/41] Move config file from arangodb repository to the docker repository. --- scripts/arangod-docker.conf | 91 +++++++++++++++++++++++++++++++++++++ scripts/install.sh | 5 +- 2 files changed, 94 insertions(+), 2 deletions(-) create mode 100644 scripts/arangod-docker.conf diff --git a/scripts/arangod-docker.conf b/scripts/arangod-docker.conf new file mode 100644 index 00000000..beb893cc --- /dev/null +++ b/scripts/arangod-docker.conf @@ -0,0 +1,91 @@ +# ArangoDB configuration file for running in docker containers +# +# Documentation: +# https://docs.arangodb.com/ConfigureArango/README.html +# + +temp-path = /tmp/arangodb + +[database] +# We don't follow LHFS for docker, since the data directory will be mounted +# flat to the top of the container: +directory = /data +# directory = ./lib/arangodb +# directory = @HOMEDRIVE@/@HOMEPATH@/arangodb/databases + +# maximal-journal-size = 33554432 + +[server] +# Specify the endpoint for HTTP requests by clients. +# tcp://ipv4-address:port +# tcp://[ipv6-address]:port +# ssl://ipv4-address:port +# ssl://[ipv6-address]:port +# unix:///path/to/socket +# +# Examples: +# endpoint = tcp://0.0.0.0:8529 +# endpoint = tcp://127.0.0.1:8529 +# endpoint = tcp://localhost:8529 +# endpoint = tcp://myserver.arangodb.com:8529 +# endpoint = tcp://[::]:8529 +# endpoint = tcp://[fe80::21a:5df1:aede:98cf]:8529 +# +# bind everything for docker, since we expect to have our own IP: +endpoint = tcp://0.0.0.0:8529 +# endpoint = tcp://127.0.0.1:8529 + +# resuse a port on restart or wait until it is freed by the operating system +# reuse-address = false + +# disable authentication for the admin frontend +disable-authentication = yes + +# number of server threads +threads = 4 + +# the user and group are normally set in the start script +uid = arangodb +gid = arangodb + +[scheduler] + +# number of threads used for I/O +threads = 2 + +[javascript] +startup-directory = /usr/share/arangodb/js +# We don't follow LHFS for docker, since the apps directory will be mounted +# flat to the top of the container: +app-path = /apps +#app-path = ./lib/arangodb-apps +# app-path = @HOMEDRIVE@/@HOMEPATH@/arangodb/apps + +# number of worker threads for V8 +v8-contexts = 5 + +[log] +level = info +severity = human +# We don't follow LHFS for docker, since the logs directory will be mounted +# flat to the top of the container: +file = /logs/arangodb.log +# file = ./log/arangodb/arangod.log + +[cluster] +disable-dispatcher-kickstarter = yes +disable-dispatcher-frontend = yes +# We don't follow LHFS for docker, since the directories will be mounted +# flat to the top of the container: +data-path = /lib/cluster +log-path = /log/cluster +agent-path = /usr/bin/arangodb/etcd-arango +arangod-path = /usr/bin/arangod +dbserver-config = /etc/arangodb/arangod-docker.conf +coordinator-config = /etc/arangodb/arangod-docker.conf +# data-path = ./lib/arangodb/cluster +# log-path = ./log/arangodb/cluster +# agent-path = /usr/bin/arangodb/etcd-arango +# arangod-path = /usr/bin/arangod +# dbserver-config = /etc/arangodb/arangod.conf +# coordinator-config = /etc/arangodb/arangod.conf diff --git a/scripts/install.sh b/scripts/install.sh index 6abdcb9c..6daf9ba2 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -40,7 +40,8 @@ apt-get -y -qq install apt-transport-https # install from local source if test "$local" = "yes"; then - + #groupadd arangodb + #useradd arangodb -g arangodb echo " ---> Using local ubuntu packages" apt-key add - < /install/Release.key dpkg -i /install/arangodb_${VERSION}_amd64.deb @@ -80,7 +81,7 @@ else rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* fi - +cp /scripts/arangod-docker.conf /etc/arangodb # create data, apps and log directory mkdir /data /apps /apps-dev /logs chown arangodb:arangodb /data /apps /apps-dev /logs From 982983ca47083a057e8211e8fc96290aeb365d04 Mon Sep 17 00:00:00 2001 From: ArangoDB GmbH Date: Fri, 15 May 2015 11:10:53 +0000 Subject: [PATCH 14/41] updated to version 2.5.4 --- scripts/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/VERSION b/scripts/VERSION index aedc15bb..fe16b348 100644 --- a/scripts/VERSION +++ b/scripts/VERSION @@ -1 +1 @@ -2.5.3 +2.5.4 From dc6480ce86318ca93fe2656d0937ee44b170df4e Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Mon, 1 Jun 2015 11:34:35 +0200 Subject: [PATCH 15/41] added standalone and help command --- Dockerfile | 10 ++- HELP.md | 12 +-- README.md | 146 ++++++++++++++++++++++++++++-------- commands/help.sh | 4 + commands/initialize.sh | 39 ++++++++++ commands/standalone.sh | 64 ++++++++++++++++ scripts/VERSION | 2 +- scripts/arangod-docker.conf | 91 ---------------------- scripts/commands.sh | 16 ++++ scripts/install.sh | 32 +++++++- scripts/start.sh | 39 ---------- 11 files changed, 283 insertions(+), 172 deletions(-) create mode 100755 commands/help.sh create mode 100755 commands/initialize.sh create mode 100755 commands/standalone.sh delete mode 100644 scripts/arangod-docker.conf create mode 100755 scripts/commands.sh delete mode 100755 scripts/start.sh diff --git a/Dockerfile b/Dockerfile index 4a6c31dc..ad211369 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,12 +7,13 @@ MAINTAINER Frank Celler # add scripts to install and run ArangoDB ADD ./scripts /scripts -# add HELP file -ADD ./HELP.md /HELP.md - # install ubuntu package RUN ./scripts/install.sh +# add commands +ADD ./HELP.md /HELP.md +ADD ./commands /commands + # expose data, apps and logs VOLUME ["/data", "/apps", "/apps-dev", "/logs"] @@ -20,4 +21,5 @@ VOLUME ["/data", "/apps", "/apps-dev", "/logs"] EXPOSE 8529 # start script -CMD ["/scripts/start.sh"] +ENTRYPOINT ["/scripts/commands.sh"] +CMD ["standalone"] diff --git a/HELP.md b/HELP.md index 5cd13db0..15bd53eb 100644 --- a/HELP.md +++ b/HELP.md @@ -4,14 +4,14 @@ volumes: /apps-dev application directory for development /logs log directory -start in development mode: - docker run -e development=1 arangodb - pipe the log file to standard out: - docker run -e verbose=1 arangodb + docker run arangodb standalone --verbose + +disable authentication + docker run arangodb standalone --disable-authentication fire up a bash after starting the server: - docker run -e console=1 -it arangodb + docker run -it arangodb standalone --console show all options: - docker run -e help=1 arangodb + docker run arangodb help diff --git a/README.md b/README.md index 0b2507aa..7cca763e 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,12 @@ # Overview / Links -ArangoDB is a multi-model, open-source database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions. Use ACID transactions if you require them. Scale horizontally and vertically with a few mouse clicks. +ArangoDB is a multi-model, open-source database with flexible data +models for documents, graphs, and key-values. Build high performance +applications using a convenient SQL-like query language or JavaScript +extensions. Use ACID transactions if you require them. Scale +horizontally and vertically with a few mouse clicks. -The supported data models can be mixed in queries and allow ArangoDB to be the aggregation point for the data request you have in mind. +The supported data models can be mixed in queries and allow ArangoDB +to be the aggregation point for the data request you have in mind. Dockerfile: [`Latest` (Dockerfile)](https://github.com/arangodb/arangodb-docker/blob/master/Dockerfile) @@ -9,19 +14,29 @@ Key Features in ArangoDB ------------------------ **Multi-Model** -Documents, graphs and key-value pairs — model your data as you see fit for your application. +Documents, graphs and key-value pairs — model your data as you see fit +for your application. **Joins** -Conveniently join what belongs together for flexible ad-hoc querying, less data redundancy. +Conveniently join what belongs together for flexible ad-hoc querying, +less data redundancy. **Transactions** -Easy application development keeping your data consistent and safe. No hassle in your client. +Easy application development keeping your data consistent and safe. No +hassle in your client. -Joins and Transactions are key features for flexible, secure data designs, widely used in RDBMSs that you won’t want to miss in NoSQL products. You decide how and when to use Joins and strong consistency guarantees, keeping all the power for scaling and performance as choice. +Joins and Transactions are key features for flexible, secure data +designs, widely used in RDBMSs that you won’t want to miss in NoSQL +products. You decide how and when to use Joins and strong consistency +guarantees, keeping all the power for scaling and performance as +choice. -Furthermore, ArangoDB offers a microservice framework called [Foxx](https://www.arangodb.com/foxx) to build your own Rest API with a few lines of code. +**Microservices** +Furthermore, ArangoDB offers a microservice framework called +[Foxx](https://www.arangodb.com/foxx) to build your own Rest API with +a few lines of code. -ArangoDB Documentation +## ArangoDB Documentation - [ArangoDB Documentation](https://www.arangodb.com/documentation) - [ArangoDB Tutorials](https://www.arangodb.com/tutorials) @@ -35,11 +50,12 @@ In order to start an ArangoDB instance run unix> docker run -d --name arangodb-instance -d arangodb/arangodb ``` -Will create and launch the arangodb 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 -`EXPOST 8529`. If you link an application container it is automatically -available in the linked container. See the following examples. +Will create and launch the arangodb 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 +`EXPOST 8529`. If you link an application container it is +automatically available in the linked container. See the following +examples. In order to get the IP arango listens on run: @@ -49,6 +65,64 @@ docker inspect --format '{{ .NetworkSettings.IPAddress }}' (where is the return string of the previous start command) +The first time you run your container, a new user `root` with all +privileges will be created with a random password. To get the +password, check the logs of the container by running: + +``` +docker logs +``` + +You will see an output like the following: + +``` +======================================================================== +ArangoDB User: "root" +ArangoDB Password: "WbvIcyqXey0XlZgI" +======================================================================== +``` + +### Credentials + +If you want to preset credentials instead of a random generated ones, +you can set the following environment variables: + +``` +ARANGODB_USERNAME to set a specific username +ARANGODB_PASSWORD to set a specific password +``` + +On this example we will preset our custom username and password: + +``` +docker run -d \ + --name arangodb \ + -p 8529:8529 \ + -e ARANGODB_USERNAME=myusername \ + -e ARANGODB_PASSWORD=mypassword \ + arangodb/arangodb +``` + +### Databases + +If you want to create a database at container's boot time, you can set the following environment variables: + +``` +ARANGODB_DBNAME to create a database +``` + +On this example we will preset our custom username and password and we will create a database: + +``` +docker run -d \ + --name arangodb \ + -p 8529:8529 \ + -e ARANGODB_USERNAME=myusername \ + -e ARANGODB_PASSWORD=mypassword \ + -e ARANGODB_DBNAME=mydb \ + arangodb/arangodb +``` + ### Using the instance In order to use the running instance from an application, link the container @@ -57,9 +131,9 @@ In order to use the running instance from an application, link the container unix> docker run --name my-app --link arangodb-instance:db-link arangodb/arangodb ``` -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 will use the instance with the name `arangodb-instance` and link +it into the application container. The application container will +contain environment variables ``` DB_LINK_PORT_8529_TCP=tcp://172.17.0.17:8529 @@ -79,8 +153,8 @@ If you want to expose the port to the outside world, run unix> docker run -p 8529:8529 -d arangodb/arangodb ``` -ArangoDB listen on port 8529 for request and the image includes `EXPOST -8529`. The `-p 8529:8529` exposes this port on the host. +ArangoDB listen on port 8529 for request and the image includes +`EXPOST 8529`. The `-p 8529:8529` exposes this port on the host. ### Command line options @@ -92,9 +166,9 @@ unix> docker run -e help=1 arangodb/arangodb ## Persistent Data -ArangoDB use the volume `/data` as database directory to store the collection -data and the volume `/apps` as apps directory to store any extensions. These -directories are marked as docker volumes. +ArangoDB use the volume `/data` as database directory to store the +collection data and the volume `/apps` as apps directory to store any +extensions. These directories are marked as docker volumes. See `docker run -e help=1 arangodb` for all volumes. @@ -104,9 +178,10 @@ A good explanation about persistence and docker container can be found here: ### Using host directories -You can map the container's volumes to a directory on the host, so that the data -is kept between runs of the container. This path `/tmp/arangodb` is in general -not the correct place to store you persistent files - it is just an example! +You can map the container's volumes to a directory on the host, so +that the data is kept between runs of the container. This path +`/tmp/arangodb` is in general not the correct place to store you +persistent files - it is just an example! ``` unix> mkdir /tmp/arangodb @@ -115,8 +190,8 @@ unix> docker run -p 8529:8529 -d \ arangodb ``` -This will use the `/tmp/arangodb` directory of the host as database directory -for ArangoDB inside the container. +This will use the `/tmp/arangodb` directory of the host as database +directory for ArangoDB inside the container. ### Using a data container @@ -159,15 +234,26 @@ This will create an image named `arangodb`. ## Issues -If you have any problems with or questions about this image, please contact us through a [GitHub issue](https://github.com/arangodb/arangodb-docker/issues). +If you have any problems with or questions about this image, please +contact us through a +[GitHub issue](https://github.com/arangodb/arangodb-docker/issues). -You can also reach many of the official image maintainers via the `#docker-library` IRC channel on [Freenode](https://freenode.net) - ArangoDB specific questions can be asked in `#arangodb`. +You can also reach many of the official image maintainers via the +`#docker-library` IRC channel on [Freenode](https://freenode.net) - +ArangoDB specific questions can be asked in `#arangodb`. ## Contributing -You are invited to contribute new features, fixes, or updates, large or small; we are always thrilled to receive pull requests, and do our best to process them as fast as we can. +You are invited to contribute new features, fixes, or updates, large +or small; we are always thrilled to receive pull requests, and do our +best to process them as fast as we can. -Before you start to code, we recommend discussing your plans through a [GitHub issue](https://github.com/arangodb/arangodb-docker/issues), especially for more ambitious contributions. This gives other contributors a chance to point you in the right direction, give you feedback on your design, and help you find out if someone else is working on the same thing. +Before you start to code, we recommend discussing your plans through a +[GitHub issue](https://github.com/arangodb/arangodb-docker/issues), +especially for more ambitious contributions. This gives other +contributors a chance to point you in the right direction, give you +feedback on your design, and help you find out if someone else is +working on the same thing. # LICENSE diff --git a/commands/help.sh b/commands/help.sh new file mode 100755 index 00000000..73de5994 --- /dev/null +++ b/commands/help.sh @@ -0,0 +1,4 @@ +#!/bin/bash +set -e + +cat /HELP.md diff --git a/commands/initialize.sh b/commands/initialize.sh new file mode 100755 index 00000000..0d154627 --- /dev/null +++ b/commands/initialize.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -e + +USER=${ARANGODB_USERNAME:-root} +PASS=${ARANGODB_PASSWORD:-$(pwgen -s -1 16)} +DB=${ARANGODB_DBNAME:-} + +# setup user and database +echo "creating initial user, please wait ..." + +( + if [ "$USER" == "root" ]; then + echo "require(\"org/arangodb/users\").replace(\"root\", \"$PASS\");" + else + echo "require(\"org/arangodb/users\").save(\"$USER\", \"$PASS\");" + echo "require(\"org/arangodb/users\").replace(\"root\", \"$PASS\", false);" + fi + + if [ ! -z "$DB" ]; then + echo "db._createDatabase(\"$DB\"); db._useDatabase(\"$DB\");" + + if [ "$USER" == "root" ]; then + echo "require(\"org/arangodb/users\").replace(\"root\", \"$PASS\");" + else + echo "require(\"org/arangodb/users\").save(\"$USER\", \"$PASS\");" + echo "require(\"org/arangodb/users\").replace(\"root\", \"$PASS\", false);" + fi + fi +) | /usr/sbin/arangod --configuration /etc/arangodb/arangod.conf --console --log.file /tmp/arangodb.log --log.tty "" > /dev/null + +echo "========================================================================" +echo "ArangoDB User: \"$USER\"" +echo "ArangoDB Password: \"$PASS\"" +if [ ! -z "$DB" ]; then + echo "ArangoDB Database: \"$DB\"" +fi +echo "========================================================================" + +touch /data/.initialized diff --git a/commands/standalone.sh b/commands/standalone.sh new file mode 100755 index 00000000..225dd158 --- /dev/null +++ b/commands/standalone.sh @@ -0,0 +1,64 @@ +#!/bin/bash +set -e + +while [ "$#" -gt 0 ]; do + opt=$1 + shift + + if [ "$opt" == "--console" ]; then + console=1 + elif [ "$opt" == "--verbose" ]; then + verbose=1 + elif [ "$opt" == "--disable-authentication" ]; then + disable_authentication=1 + elif [ "$opt" == "--help" ]; then + help=1 + else + echo "arangodb: unknown option '$opt'" + exit 1 + fi +done + +# help +if test "$help" == "1"; then + cat /HELP.md + + exit 0 +fi + +echo +echo "starting ArangoDB in stand-alone mode" + +# fix permissions +touch /logs/arangodb.log +rm -rf /tmp/arangodb +mkdir /tmp/arangodb + +chown arangodb:arangodb /data /apps /apps-dev /logs /logs/arangodb.log /tmp/arangodb + +# pipe logfile to standard out +if test "$verbose" = "1"; then + tail -f /logs/arangodb.log & +fi + +# initialize for first run +if test ! -e /data/.initialized; then + /commands/initialize.sh +fi + +# without authentication +if test "$disable_authentication" = "1"; then + AUTH="--server.disable-authentication true" +fi + +# start server +if test "$console" = "1"; then + /usr/sbin/arangod \ + --configuration /etc/arangodb/arangod.conf \ + "$@" $AUTH & + /bin/bash +else + /usr/sbin/arangod \ + --configuration /etc/arangodb/arangod.conf \ + "$@" $AUTH +fi diff --git a/scripts/VERSION b/scripts/VERSION index fe16b348..315ea396 100644 --- a/scripts/VERSION +++ b/scripts/VERSION @@ -1 +1 @@ -2.5.4 +2.6.0a3 diff --git a/scripts/arangod-docker.conf b/scripts/arangod-docker.conf deleted file mode 100644 index beb893cc..00000000 --- a/scripts/arangod-docker.conf +++ /dev/null @@ -1,91 +0,0 @@ -# ArangoDB configuration file for running in docker containers -# -# Documentation: -# https://docs.arangodb.com/ConfigureArango/README.html -# - -temp-path = /tmp/arangodb - -[database] -# We don't follow LHFS for docker, since the data directory will be mounted -# flat to the top of the container: -directory = /data -# directory = ./lib/arangodb -# directory = @HOMEDRIVE@/@HOMEPATH@/arangodb/databases - -# maximal-journal-size = 33554432 - -[server] -# Specify the endpoint for HTTP requests by clients. -# tcp://ipv4-address:port -# tcp://[ipv6-address]:port -# ssl://ipv4-address:port -# ssl://[ipv6-address]:port -# unix:///path/to/socket -# -# Examples: -# endpoint = tcp://0.0.0.0:8529 -# endpoint = tcp://127.0.0.1:8529 -# endpoint = tcp://localhost:8529 -# endpoint = tcp://myserver.arangodb.com:8529 -# endpoint = tcp://[::]:8529 -# endpoint = tcp://[fe80::21a:5df1:aede:98cf]:8529 -# -# bind everything for docker, since we expect to have our own IP: -endpoint = tcp://0.0.0.0:8529 -# endpoint = tcp://127.0.0.1:8529 - -# resuse a port on restart or wait until it is freed by the operating system -# reuse-address = false - -# disable authentication for the admin frontend -disable-authentication = yes - -# number of server threads -threads = 4 - -# the user and group are normally set in the start script -uid = arangodb -gid = arangodb - -[scheduler] - -# number of threads used for I/O -threads = 2 - -[javascript] -startup-directory = /usr/share/arangodb/js -# We don't follow LHFS for docker, since the apps directory will be mounted -# flat to the top of the container: -app-path = /apps -#app-path = ./lib/arangodb-apps -# app-path = @HOMEDRIVE@/@HOMEPATH@/arangodb/apps - -# number of worker threads for V8 -v8-contexts = 5 - -[log] -level = info -severity = human -# We don't follow LHFS for docker, since the logs directory will be mounted -# flat to the top of the container: -file = /logs/arangodb.log -# file = ./log/arangodb/arangod.log - -[cluster] -disable-dispatcher-kickstarter = yes -disable-dispatcher-frontend = yes -# We don't follow LHFS for docker, since the directories will be mounted -# flat to the top of the container: -data-path = /lib/cluster -log-path = /log/cluster -agent-path = /usr/bin/arangodb/etcd-arango -arangod-path = /usr/bin/arangod -dbserver-config = /etc/arangodb/arangod-docker.conf -coordinator-config = /etc/arangodb/arangod-docker.conf -# data-path = ./lib/arangodb/cluster -# log-path = ./log/arangodb/cluster -# agent-path = /usr/bin/arangodb/etcd-arango -# arangod-path = /usr/bin/arangod -# dbserver-config = /etc/arangodb/arangod.conf -# coordinator-config = /etc/arangodb/arangod.conf diff --git a/scripts/commands.sh b/scripts/commands.sh new file mode 100755 index 00000000..1bf6ccef --- /dev/null +++ b/scripts/commands.sh @@ -0,0 +1,16 @@ +#!/bin/sh +set -e + +if test "$#" -lt 1 -o "$1" = "help"; then + exec /commands/help.sh +fi + +cmd=$1 +shift + +if test -f "/commands/${cmd}.sh"; then + exec /commands/${cmd}.sh "$@" +else + echo "unknown command: $cmd" + exit 0 +fi diff --git a/scripts/install.sh b/scripts/install.sh index 0d5faa11..9b7597a4 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -37,6 +37,7 @@ echo " ---> Updating debian" apt-get -y -qq --force-yes update apt-get -y -qq --force-yes install wget apt-get -y -qq install apt-transport-https +apt-get -y -qq install pwgen # install from local source if test "$local" = "yes"; then @@ -81,7 +82,36 @@ else rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* fi -cp /scripts/arangod-docker.conf /etc/arangodb + +# fix config files +echo " ---> Fixing config files" + +( + cd /etc/arangodb + + echo 'temp-path = /tmp/arangodb' > arangod.conf.new + sed -e 's~^directory.*~\n'"$msg"'\ndirectory = /data\n~' \ + -e 's~^app-path.*~\n'"$msg"'\napp-path = /apps\n~' \ + -e 's~^file.*~\n'"$msg"'\nfile = /logs/arangodb.log\n~' \ + -e 's~^data-path.*~data-path = /lib/cluster~' \ + -e 's~^log-path.*~log-path = /logs/cluster~' \ + -e 's~^agent-path.*~agent-path = /usr/bin/arangodb/etcd-arango~' \ + -e 's~^arangod-path.*~arangod-path = /usr/sbin/arangod~' \ + -e 's~^dbserver-config.*~dbserver-config = /etc/arangodb/arangod.conf~' \ + -e 's~^coordinator-config.*~coordinator-config = /etc/arangodb/arangod.conf~' \ + -e 's~^endpoint.*~endpoint = tcp://0.0.0.0:8529~'\ + -e 's~^# uid~uid~' \ + -e 's~^# gid~gid~' < arangod.conf >> arangod.conf.new + mv arangod.conf.new arangod.conf + + for i in *.conf; do + sed -e 's~^disable-authentication.*~disable-authentication = no~' < $i > $i.new + mv $i.new $i + done +) + # create data, apps and log directory +echo " ---> Setting up exported directories" + mkdir /data /apps /apps-dev /logs chown arangodb:arangodb /data /apps /apps-dev /logs diff --git a/scripts/start.sh b/scripts/start.sh deleted file mode 100755 index 5af40246..00000000 --- a/scripts/start.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -set -e - -# help -if test "$help" = "1"; then - cat /HELP.md - - exit 0 -else - echo "show all options:" - echo " docker run -e help=1 arangodb" -fi - -echo -echo "starting ArangoDB in stand-alone mode" - -# fix permissions -touch /logs/arangodb.log -rm -rf /tmp/arangodb -mkdir /tmp/arangodb - -chown arangodb:arangodb /data /apps /apps-dev /logs /logs/arangodb.log /tmp/arangodb - -# pipe logfile to standard out -if test "$verbose" = "1"; then - tail -f /logs/arangodb.log & -fi - -# start server -if test "$console" = "1"; then - /usr/sbin/arangod \ - --configuration /etc/arangodb/arangod-docker.conf \ - "$@" & - /bin/bash -else - /usr/sbin/arangod \ - --configuration /etc/arangodb/arangod-docker.conf \ - "$@" -fi From b8a1eb99f750e5e5454d5eab861bf8af2815cb3b Mon Sep 17 00:00:00 2001 From: ArangoDB GmbH Date: Sun, 21 Jun 2015 20:57:48 +0000 Subject: [PATCH 16/41] updated to version 2.6.0 --- scripts/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/VERSION b/scripts/VERSION index 315ea396..e70b4523 100644 --- a/scripts/VERSION +++ b/scripts/VERSION @@ -1 +1 @@ -2.6.0a3 +2.6.0 From ab873476215504eaae61b75da1c2fa90a5dc0960 Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Sun, 21 Jun 2015 23:18:56 +0200 Subject: [PATCH 17/41] added libgoogle-perftools4 --- scripts/install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/install.sh b/scripts/install.sh index 9b7597a4..19177548 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -38,6 +38,7 @@ apt-get -y -qq --force-yes update apt-get -y -qq --force-yes install wget apt-get -y -qq install apt-transport-https apt-get -y -qq install pwgen +apt-get -y -qq install libgoogle-perftools4 # install from local source if test "$local" = "yes"; then From 1fdbfffb1ee2e913bb6339df9593f7824ce5dc07 Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Fri, 26 Jun 2015 13:19:58 +0200 Subject: [PATCH 18/41] added foxxes and local-config --- Dockerfile | 8 +++++++- HELP.md | 3 +++ commands/initialize.sh | 7 +++++++ commands/standalone.sh | 20 +++++++++--------- foxxes/README.txt | 8 ++++++++ local-config/README.txt | 2 ++ scripts/install-foxxes.js | 43 +++++++++++++++++++++++++++++++++++++++ 7 files changed, 80 insertions(+), 11 deletions(-) create mode 100644 foxxes/README.txt create mode 100644 local-config/README.txt create mode 100644 scripts/install-foxxes.js diff --git a/Dockerfile b/Dockerfile index ad211369..df5be30b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,8 +14,14 @@ RUN ./scripts/install.sh ADD ./HELP.md /HELP.md ADD ./commands /commands +# copy any required foxxes +ADD ./foxxes /foxxes + +# copy any local config files +ADD ./local-config /etc/arangodb + # expose data, apps and logs -VOLUME ["/data", "/apps", "/apps-dev", "/logs"] +VOLUME ["/data", "/apps", "/apps-dev", "/logs", "/foxxes"] # standard port EXPOSE 8529 diff --git a/HELP.md b/HELP.md index 15bd53eb..46bc756a 100644 --- a/HELP.md +++ b/HELP.md @@ -13,5 +13,8 @@ disable authentication fire up a bash after starting the server: docker run -it arangodb standalone --console +disable initilisation on first boot + docker run arangodb standalone --disable-initialize + show all options: docker run arangodb help diff --git a/commands/initialize.sh b/commands/initialize.sh index 0d154627..60f4cc7c 100755 --- a/commands/initialize.sh +++ b/commands/initialize.sh @@ -36,4 +36,11 @@ if [ ! -z "$DB" ]; then fi echo "========================================================================" +# check for foxxes +if test -f "/foxxes/mounts.json"; then + echo "checking for foxxes, please wait ..." + + /usr/sbin/arangod --configuration /etc/arangodb/arangod.conf --log.level error --javascript.script /scripts/install-foxxes.js +fi + touch /data/.initialized diff --git a/commands/standalone.sh b/commands/standalone.sh index 225dd158..ee8403c0 100755 --- a/commands/standalone.sh +++ b/commands/standalone.sh @@ -1,6 +1,8 @@ #!/bin/bash set -e +initialize=1 + while [ "$#" -gt 0 ]; do opt=$1 shift @@ -11,6 +13,8 @@ while [ "$#" -gt 0 ]; do verbose=1 elif [ "$opt" == "--disable-authentication" ]; then disable_authentication=1 + elif [ "$opt" == "--disable-initialize" ]; then + initialize=0 elif [ "$opt" == "--help" ]; then help=1 else @@ -37,28 +41,24 @@ mkdir /tmp/arangodb chown arangodb:arangodb /data /apps /apps-dev /logs /logs/arangodb.log /tmp/arangodb # pipe logfile to standard out -if test "$verbose" = "1"; then +if test "$verbose" == "1"; then tail -f /logs/arangodb.log & fi # initialize for first run -if test ! -e /data/.initialized; then +if test "$initialize" = "1" -a ! -e /data/.initialized; then /commands/initialize.sh fi # without authentication -if test "$disable_authentication" = "1"; then +if test "$disable_authentication" == "1"; then AUTH="--server.disable-authentication true" fi # start server -if test "$console" = "1"; then - /usr/sbin/arangod \ - --configuration /etc/arangodb/arangod.conf \ - "$@" $AUTH & +if test "$console" == "1"; then + /usr/sbin/arangod "$@" $AUTH & /bin/bash else - /usr/sbin/arangod \ - --configuration /etc/arangodb/arangod.conf \ - "$@" $AUTH + /usr/sbin/arangod "$@" $AUTH fi diff --git a/foxxes/README.txt b/foxxes/README.txt new file mode 100644 index 00000000..08dd4944 --- /dev/null +++ b/foxxes/README.txt @@ -0,0 +1,8 @@ +Create a document "mount.json" and specify the foxxes, which should +be mount during init. + +Example: + + [ + { "app": "nonce.zip", "mount": "/nonce" } + ] diff --git a/local-config/README.txt b/local-config/README.txt new file mode 100644 index 00000000..9fdde002 --- /dev/null +++ b/local-config/README.txt @@ -0,0 +1,2 @@ +you can put local modifications here. The naming convention is to add ".local". For example, +create a file "arangod.conf.local" to modify "arangod.conf". diff --git a/scripts/install-foxxes.js b/scripts/install-foxxes.js new file mode 100644 index 00000000..d3370a21 --- /dev/null +++ b/scripts/install-foxxes.js @@ -0,0 +1,43 @@ +'use strict'; + +var fs = require('fs'); +var foxx = require('org/arangodb/foxx/manager'); +var internal = require('internal'); + +function main(argv) { + var mounts = ""; + + try { + mounts = fs.read('/foxxes/mounts.json'); + } + catch (err) { + internal.print("no '/foxxes/mounts.json' file found, nothing to install"); + internal.print("(" + err.stack + ")"); + } + + if (mounts !== "") { + try { + mounts = JSON.parse(mounts); + } + catch (err) { + internal.print("'/foxx/mounts.json' file is corrupt, aborting install"); + internal.print("(" + err.stack + ")"); + mounts = []; + } + } + + var i; + + for (i = 0; i < mounts.length; ++i) { + var mount = mounts[i]; + + internal.print("installing '" + mount.app + "' on path '" + mount.mount + "'"); + + try { + foxx.install('/foxxes/' + mount.app, mount.mount, mount.options || {}); + } + catch (err) { + internal.print("installation failed: '%s'" + err.stack + "'"); + } + } +} From d389dddb0fc087f3fd5040eee045e46237f61c36 Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Fri, 26 Jun 2015 13:33:39 +0200 Subject: [PATCH 19/41] more info output --- commands/initialize.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/commands/initialize.sh b/commands/initialize.sh index 60f4cc7c..e4541296 100755 --- a/commands/initialize.sh +++ b/commands/initialize.sh @@ -41,6 +41,8 @@ if test -f "/foxxes/mounts.json"; then echo "checking for foxxes, please wait ..." /usr/sbin/arangod --configuration /etc/arangodb/arangod.conf --log.level error --javascript.script /scripts/install-foxxes.js + + echo "installation has finished" fi touch /data/.initialized From acc098ffea77b860c2074cdc3d6785952552f9e0 Mon Sep 17 00:00:00 2001 From: Max Neunhoeffer Date: Fri, 26 Jun 2015 14:01:44 +0200 Subject: [PATCH 20/41] Add a lost s. --- foxxes/README.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/foxxes/README.txt b/foxxes/README.txt index 08dd4944..84fa51e2 100644 --- a/foxxes/README.txt +++ b/foxxes/README.txt @@ -1,4 +1,4 @@ -Create a document "mount.json" and specify the foxxes, which should +Create a document "mounts.json" and specify the foxxes, which should be mount during init. Example: From 89ee603ec2e8e73b4e8a2a3880fa44f67bf66d0e Mon Sep 17 00:00:00 2001 From: Max Neunhoeffer Date: Fri, 26 Jun 2015 14:06:43 +0200 Subject: [PATCH 21/41] Fix a typo. --- scripts/install-foxxes.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install-foxxes.js b/scripts/install-foxxes.js index d3370a21..dea6747d 100644 --- a/scripts/install-foxxes.js +++ b/scripts/install-foxxes.js @@ -20,7 +20,7 @@ function main(argv) { mounts = JSON.parse(mounts); } catch (err) { - internal.print("'/foxx/mounts.json' file is corrupt, aborting install"); + internal.print("'/foxxes/mounts.json' file is corrupt, aborting install"); internal.print("(" + err.stack + ")"); mounts = []; } From 7ea85f945ed12989c72b69d018988eb7e7549dfa Mon Sep 17 00:00:00 2001 From: ArangoDB GmbH Date: Mon, 29 Jun 2015 08:44:35 +0000 Subject: [PATCH 22/41] updated to version 2.6.1 --- scripts/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/VERSION b/scripts/VERSION index e70b4523..6a6a3d8e 100644 --- a/scripts/VERSION +++ b/scripts/VERSION @@ -1 +1 @@ -2.6.0 +2.6.1 From 80f8b0993014dbb36ee74a4eaa64eb95adcd7541 Mon Sep 17 00:00:00 2001 From: ArangoDB GmbH Date: Mon, 6 Jul 2015 12:54:40 +0000 Subject: [PATCH 23/41] updated to version 2.6.2 --- scripts/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/VERSION b/scripts/VERSION index 6a6a3d8e..097a15a2 100644 --- a/scripts/VERSION +++ b/scripts/VERSION @@ -1 +1 @@ -2.6.1 +2.6.2 From bb1658b9e85f59dea992b57a4d71a6d96cc7793a Mon Sep 17 00:00:00 2001 From: Wilfried Goesgens Date: Tue, 21 Jul 2015 16:47:36 +0200 Subject: [PATCH 24/41] add libgoogle-perftools4 as a dependency here too. --- scripts/install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/install.sh b/scripts/install.sh index 6daf9ba2..5108d39b 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -36,6 +36,7 @@ echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections echo " ---> Updating ubuntu" apt-get -y -qq --force-yes update apt-get -y -qq --force-yes install wget +apt-get -y -qq --force-yes install libgoogle-perftools4 apt-get -y -qq install apt-transport-https # install from local source From ed3327e212c6165c763087d7932b79568512c3bd Mon Sep 17 00:00:00 2001 From: ArangoDB GmbH Date: Tue, 28 Jul 2015 07:28:00 +0000 Subject: [PATCH 25/41] updated to version 2.6.3 --- scripts/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/VERSION b/scripts/VERSION index 097a15a2..ec1cf33c 100644 --- a/scripts/VERSION +++ b/scripts/VERSION @@ -1 +1 @@ -2.6.2 +2.6.3 From c8233e2f0b18c5f9b8cd31b36996a8fabf31e144 Mon Sep 17 00:00:00 2001 From: ArangoDB GmbH Date: Wed, 5 Aug 2015 10:10:16 +0000 Subject: [PATCH 26/41] updated to version 2.6.4 --- scripts/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/VERSION b/scripts/VERSION index ec1cf33c..2714f531 100644 --- a/scripts/VERSION +++ b/scripts/VERSION @@ -1 +1 @@ -2.6.3 +2.6.4 From c1835e17b06d786c2a349a8dabfdc3b93f76ab82 Mon Sep 17 00:00:00 2001 From: ArangoDB GmbH Date: Tue, 18 Aug 2015 06:33:14 +0000 Subject: [PATCH 27/41] updated to version 2.6.1 --- scripts/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/VERSION b/scripts/VERSION index 2714f531..6a6a3d8e 100644 --- a/scripts/VERSION +++ b/scripts/VERSION @@ -1 +1 @@ -2.6.4 +2.6.1 From e5cdf661c59da2e4089af21adc4473b909058717 Mon Sep 17 00:00:00 2001 From: ArangoDB GmbH Date: Tue, 18 Aug 2015 20:30:53 +0000 Subject: [PATCH 28/41] updated to version 2.6.5 --- scripts/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/VERSION b/scripts/VERSION index 6a6a3d8e..57cf282e 100644 --- a/scripts/VERSION +++ b/scripts/VERSION @@ -1 +1 @@ -2.6.1 +2.6.5 From a83d0922c213779c66658bd8215d0e6ee0e0628c Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Sat, 5 Sep 2015 12:37:51 +0200 Subject: [PATCH 29/41] added bash command --- commands/bash.sh | 2 ++ 1 file changed, 2 insertions(+) create mode 100755 commands/bash.sh diff --git a/commands/bash.sh b/commands/bash.sh new file mode 100755 index 00000000..a6d71a8b --- /dev/null +++ b/commands/bash.sh @@ -0,0 +1,2 @@ +#!/bin/bash +exec /bin/bash From cc52671db2603d881634fadcd22f518a53604d80 Mon Sep 17 00:00:00 2001 From: ArangoDB GmbH Date: Sat, 5 Sep 2015 11:02:20 +0000 Subject: [PATCH 30/41] updated to version 2.6.7 --- scripts/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/VERSION b/scripts/VERSION index 57cf282e..e261122d 100644 --- a/scripts/VERSION +++ b/scripts/VERSION @@ -1 +1 @@ -2.6.5 +2.6.7 From 49dd00caf000e349587360e3679f56c332e600f0 Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Sat, 5 Sep 2015 14:09:02 +0200 Subject: [PATCH 31/41] offical paths; moved to Debian 8; added --upgrade flag --- Dockerfile | 6 +++--- HELP.md | 16 +++++++++------- README.md | 23 ++++++++++++++++------- commands/initialize.sh | 4 ++-- commands/standalone.sh | 28 ++++++++++++++++++++++------ scripts/install-foxxes.js | 8 ++++---- scripts/install.sh | 18 +++++------------- 7 files changed, 61 insertions(+), 42 deletions(-) diff --git a/Dockerfile b/Dockerfile index df5be30b..f0483b46 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM debian:jessie +FROM debian:8 MAINTAINER Frank Celler # for local installation, uncomment @@ -15,13 +15,13 @@ ADD ./HELP.md /HELP.md ADD ./commands /commands # copy any required foxxes -ADD ./foxxes /foxxes +ADD ./foxxes /var/lib/arangodb-foxxes # copy any local config files ADD ./local-config /etc/arangodb # expose data, apps and logs -VOLUME ["/data", "/apps", "/apps-dev", "/logs", "/foxxes"] +VOLUME ["/var/lib/arangodb", "/var/lib/arangodb-apps", "/var/log/arangodb", "/var/lib/arangodb-foxxes"] # standard port EXPOSE 8529 diff --git a/HELP.md b/HELP.md index f543269f..dc23fb2a 100644 --- a/HELP.md +++ b/HELP.md @@ -1,18 +1,20 @@ volumes: - /data database files - /apps application directory - /apps-dev application directory for development - /logs log directory + /var/lib/arangodb database files + /var/lib/arangodb-apps application directory + /var/log/arangodb log directory + +run an upgrade: + docker run arangodb standalone --upgrade pipe the log file to standard out: docker run arangodb standalone --verbose -disable authentication - docker run arangodb standalone --disable-authentication - fire up a bash after starting the server: docker run -it arangodb standalone --console +disable authentication + docker run arangodb standalone --disable-authentication + disable initialisation on first boot docker run arangodb standalone --disable-initialize diff --git a/README.md b/README.md index 7cca763e..ec10a21d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # Overview / Links + ArangoDB is a multi-model, open-source database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript @@ -10,8 +11,15 @@ to be the aggregation point for the data request you have in mind. Dockerfile: [`Latest` (Dockerfile)](https://github.com/arangodb/arangodb-docker/blob/master/Dockerfile) -Key Features in ArangoDB ------------------------- +**Note** that we have changed the location of the data files, in order +to be compatible with the official docker image (see +https://github.com/docker-library/official-images/pull/728): + +- `/var/lib/arangodb` instead of `/data` +- `/var/lib/arangodb-apps` instead of `/apps` +- `/var/log/arangodb` instead of `/logs` + +## Key Features in ArangoDB **Multi-Model** Documents, graphs and key-value pairs — model your data as you see fit @@ -37,6 +45,7 @@ Furthermore, ArangoDB offers a microservice framework called a few lines of code. ## ArangoDB Documentation + - [ArangoDB Documentation](https://www.arangodb.com/documentation) - [ArangoDB Tutorials](https://www.arangodb.com/tutorials) @@ -166,8 +175,8 @@ unix> docker run -e help=1 arangodb/arangodb ## Persistent Data -ArangoDB use the volume `/data` as database directory to store the -collection data and the volume `/apps` as apps directory to store any +ArangoDB use the volume `/var/lib/arangodb` as database directory to store the +collection data and the volume `/var/lib/arangodb-apps` as apps directory to store any extensions. These directories are marked as docker volumes. See `docker run -e help=1 arangodb` for all volumes. @@ -186,7 +195,7 @@ persistent files - it is just an example! ``` unix> mkdir /tmp/arangodb unix> docker run -p 8529:8529 -d \ - -v /tmp/arangodb:/data \ + -v /tmp/arangodb:/var/lib/arangodb \ arangodb ``` @@ -198,7 +207,7 @@ directory for ArangoDB inside the container. Alternatively you can create a container holding the data. ``` -unix> docker run -d --name arangodb-persist -v /data debian:8.0 true +unix> docker run -d --name arangodb-persist -v /var/lib/arangodb debian:8.0 true ``` And use this data container in your ArangoDB container. @@ -214,7 +223,7 @@ or for creating the volume only containers. For example ``` -unix> docker run -d --name arangodb-persist -v /data tianon/true true +unix> docker run -d --name arangodb-persist -v /var/lib/arangodb tianon/true true ``` # Images diff --git a/commands/initialize.sh b/commands/initialize.sh index e4541296..1997e6fd 100755 --- a/commands/initialize.sh +++ b/commands/initialize.sh @@ -37,7 +37,7 @@ fi echo "========================================================================" # check for foxxes -if test -f "/foxxes/mounts.json"; then +if test -f "/var/lib/arangodb-foxxes/mounts.json"; then echo "checking for foxxes, please wait ..." /usr/sbin/arangod --configuration /etc/arangodb/arangod.conf --log.level error --javascript.script /scripts/install-foxxes.js @@ -45,4 +45,4 @@ if test -f "/foxxes/mounts.json"; then echo "installation has finished" fi -touch /data/.initialized +touch /var/lib/arangodb/.initialized diff --git a/commands/standalone.sh b/commands/standalone.sh index ee8403c0..c78f6848 100755 --- a/commands/standalone.sh +++ b/commands/standalone.sh @@ -3,7 +3,7 @@ set -e initialize=1 -while [ "$#" -gt 0 ]; do +while [ "$#" -gt 0 -a "$1" != "--" ]; do opt=$1 shift @@ -11,6 +11,8 @@ while [ "$#" -gt 0 ]; do console=1 elif [ "$opt" == "--verbose" ]; then verbose=1 + elif [ "$opt" == "--upgrade" ]; then + upgrade=1 elif [ "$opt" == "--disable-authentication" ]; then disable_authentication=1 elif [ "$opt" == "--disable-initialize" ]; then @@ -23,6 +25,10 @@ while [ "$#" -gt 0 ]; do fi done +if [ "$#" -gt 0 -a "$1" == "--" ]; then + shift +fi + # help if test "$help" == "1"; then cat /HELP.md @@ -34,19 +40,27 @@ echo echo "starting ArangoDB in stand-alone mode" # fix permissions -touch /logs/arangodb.log +mkdir -p /var/lib/arangodb/cluster +mkdir -p /var/log/arangodb/cluster +mkdir -p /var/lib/arangodb-apps + +touch /var/log/arangodb/arangodb.log + rm -rf /tmp/arangodb mkdir /tmp/arangodb -chown arangodb:arangodb /data /apps /apps-dev /logs /logs/arangodb.log /tmp/arangodb +chown -R arangodb:arangodb \ + /var/lib/arangodb \ + /var/lib/arangodb-apps \ + /var/log/arangodb # pipe logfile to standard out if test "$verbose" == "1"; then - tail -f /logs/arangodb.log & + tail -f /var/log/arangodb/arangodb.log & fi # initialize for first run -if test "$initialize" = "1" -a ! -e /data/.initialized; then +if test "$initialize" = "1" -a ! -e /var/lib/arangodb/.initialized; then /commands/initialize.sh fi @@ -56,7 +70,9 @@ if test "$disable_authentication" == "1"; then fi # start server -if test "$console" == "1"; then +if test "$upgrade" == "1"; then + /usr/sbin/arangod "$@" --upgrade +elif test "$console" == "1"; then /usr/sbin/arangod "$@" $AUTH & /bin/bash else diff --git a/scripts/install-foxxes.js b/scripts/install-foxxes.js index dea6747d..f438c173 100644 --- a/scripts/install-foxxes.js +++ b/scripts/install-foxxes.js @@ -8,10 +8,10 @@ function main(argv) { var mounts = ""; try { - mounts = fs.read('/foxxes/mounts.json'); + mounts = fs.read('/var/lib/arangodb-foxxes/mounts.json'); } catch (err) { - internal.print("no '/foxxes/mounts.json' file found, nothing to install"); + internal.print("no '/var/lib/arangodb-foxxes/mounts.json' file found, nothing to install"); internal.print("(" + err.stack + ")"); } @@ -20,7 +20,7 @@ function main(argv) { mounts = JSON.parse(mounts); } catch (err) { - internal.print("'/foxxes/mounts.json' file is corrupt, aborting install"); + internal.print("'/var/lib/arangodb-foxxes/mounts.json' file is corrupt, aborting install"); internal.print("(" + err.stack + ")"); mounts = []; } @@ -34,7 +34,7 @@ function main(argv) { internal.print("installing '" + mount.app + "' on path '" + mount.mount + "'"); try { - foxx.install('/foxxes/' + mount.app, mount.mount, mount.options || {}); + foxx.install('/var/lib/arangodb-foxxes/' + mount.app, mount.mount, mount.options || {}); } catch (err) { internal.print("installation failed: '%s'" + err.stack + "'"); diff --git a/scripts/install.sh b/scripts/install.sh index 19177548..29de2f05 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -19,7 +19,7 @@ case $VERSION in esac # set repostory path -ARANGO_URL=https://www.arangodb.com/repositories/${ARANGO_REPO}/Debian_7.0 +ARANGO_URL=https://www.arangodb.com/repositories/${ARANGO_REPO}/Debian_8.0 echo " ---> Using repository $ARANGO_URL and version $VERSION" # check for local (non-network) install @@ -72,7 +72,7 @@ else dpkg --install arangodb_*_amd64.deb rm arangodb_*_amd64.deb else - wget "https://www.arangodb.com/repositories/${ARANGO_REPO}/Debian_8.0/amd64/arangodb_${VERSION}_amd64.deb" + wget --quiet "https://www.arangodb.com/repositories/${ARANGO_REPO}/Debian_8.0/amd64/arangodb_${VERSION}_amd64.deb" dpkg --install arangodb_${VERSION}_amd64.deb rm arangodb_${VERSION}_amd64.deb fi @@ -91,11 +91,9 @@ echo " ---> Fixing config files" cd /etc/arangodb echo 'temp-path = /tmp/arangodb' > arangod.conf.new - sed -e 's~^directory.*~\n'"$msg"'\ndirectory = /data\n~' \ - -e 's~^app-path.*~\n'"$msg"'\napp-path = /apps\n~' \ - -e 's~^file.*~\n'"$msg"'\nfile = /logs/arangodb.log\n~' \ - -e 's~^data-path.*~data-path = /lib/cluster~' \ - -e 's~^log-path.*~log-path = /logs/cluster~' \ + sed \ + -e 's~^data-path.*~data-path = /var/lib/arangodb/cluster~' \ + -e 's~^log-path.*~log-path = /var/log/arangodb/cluster~' \ -e 's~^agent-path.*~agent-path = /usr/bin/arangodb/etcd-arango~' \ -e 's~^arangod-path.*~arangod-path = /usr/sbin/arangod~' \ -e 's~^dbserver-config.*~dbserver-config = /etc/arangodb/arangod.conf~' \ @@ -110,9 +108,3 @@ echo " ---> Fixing config files" mv $i.new $i done ) - -# create data, apps and log directory -echo " ---> Setting up exported directories" - -mkdir /data /apps /apps-dev /logs -chown arangodb:arangodb /data /apps /apps-dev /logs From cdb1ca8d33247e139da7174344055d4c38da2eb9 Mon Sep 17 00:00:00 2001 From: ArangoDB GmbH Date: Thu, 10 Sep 2015 08:45:50 +0000 Subject: [PATCH 32/41] updated to version 2.6.8 --- scripts/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/VERSION b/scripts/VERSION index e261122d..743af5e1 100644 --- a/scripts/VERSION +++ b/scripts/VERSION @@ -1 +1 @@ -2.6.7 +2.6.8 From c7d4afbe17a61eafcb82c33cf8fcff5820cc810f Mon Sep 17 00:00:00 2001 From: ArangoDB GmbH Date: Wed, 30 Sep 2015 18:25:27 +0000 Subject: [PATCH 33/41] updated to version 2.6.9 --- scripts/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/VERSION b/scripts/VERSION index 743af5e1..d48d3702 100644 --- a/scripts/VERSION +++ b/scripts/VERSION @@ -1 +1 @@ -2.6.8 +2.6.9 From d4f247798a9f8667d2214679e6c7038882287172 Mon Sep 17 00:00:00 2001 From: ArangoDB Release BOT Date: Mon, 5 Oct 2015 10:33:50 +0200 Subject: [PATCH 34/41] removed creation of temp directory, this is done by the server itself --- commands/standalone.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/commands/standalone.sh b/commands/standalone.sh index c78f6848..e3779719 100755 --- a/commands/standalone.sh +++ b/commands/standalone.sh @@ -47,7 +47,6 @@ mkdir -p /var/lib/arangodb-apps touch /var/log/arangodb/arangodb.log rm -rf /tmp/arangodb -mkdir /tmp/arangodb chown -R arangodb:arangodb \ /var/lib/arangodb \ From b49367797d62eaf87368bba50d6893d689e29153 Mon Sep 17 00:00:00 2001 From: ArangoDB GmbH Date: Thu, 8 Oct 2015 18:28:11 +0000 Subject: [PATCH 35/41] updated to version 2.7.0 --- scripts/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/VERSION b/scripts/VERSION index d48d3702..24ba9a38 100644 --- a/scripts/VERSION +++ b/scripts/VERSION @@ -1 +1 @@ -2.6.9 +2.7.0 From 7925dc1b6c995844b41ff13d292e2f99c61e0ba7 Mon Sep 17 00:00:00 2001 From: ArangoDB GmbH Date: Mon, 9 Nov 2015 17:19:29 +0000 Subject: [PATCH 36/41] updated to version 2.7.1 --- scripts/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/VERSION b/scripts/VERSION index 24ba9a38..860487ca 100644 --- a/scripts/VERSION +++ b/scripts/VERSION @@ -1 +1 @@ -2.7.0 +2.7.1 From f6c9d8d66079904d037e033c2bd7c91f5143845e Mon Sep 17 00:00:00 2001 From: ArangoDB GmbH Date: Wed, 2 Dec 2015 21:21:30 +0000 Subject: [PATCH 37/41] updated to version 2.7.2 --- scripts/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/VERSION b/scripts/VERSION index 860487ca..37c2961c 100644 --- a/scripts/VERSION +++ b/scripts/VERSION @@ -1 +1 @@ -2.7.1 +2.7.2 From 6d31650a382354bca7968ec043d052c62e17e3aa Mon Sep 17 00:00:00 2001 From: ArangoDB GmbH Date: Fri, 18 Dec 2015 14:47:50 +0000 Subject: [PATCH 38/41] updated to version 2.7.3 --- scripts/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/VERSION b/scripts/VERSION index 37c2961c..2c9b4ef4 100644 --- a/scripts/VERSION +++ b/scripts/VERSION @@ -1 +1 @@ -2.7.2 +2.7.3 From 3c4b9c8d2491f11ae521cbf6ecb9e5d394ebbf48 Mon Sep 17 00:00:00 2001 From: ArangoDB GmbH Date: Sun, 24 Jan 2016 21:48:43 +0000 Subject: [PATCH 39/41] updated to version 2.7.5 --- scripts/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/VERSION b/scripts/VERSION index 2c9b4ef4..a603bb50 100644 --- a/scripts/VERSION +++ b/scripts/VERSION @@ -1 +1 @@ -2.7.3 +2.7.5 From 801a32d19a710b3864395039ea6970c89c32c33b Mon Sep 17 00:00:00 2001 From: ArangoDB GmbH Date: Sun, 31 Jan 2016 14:35:37 +0000 Subject: [PATCH 40/41] updated to version 2.7.6 --- scripts/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/VERSION b/scripts/VERSION index a603bb50..49cdd668 100644 --- a/scripts/VERSION +++ b/scripts/VERSION @@ -1 +1 @@ -2.7.5 +2.7.6 From 4afd1b7a93cdaa119a3097dff824dc6a90beb4cf Mon Sep 17 00:00:00 2001 From: ArangoDB GmbH Date: Wed, 2 Mar 2016 17:36:29 +0000 Subject: [PATCH 41/41] updated to version 2.7.7 --- scripts/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/VERSION b/scripts/VERSION index 49cdd668..1f7da99d 100644 --- a/scripts/VERSION +++ b/scripts/VERSION @@ -1 +1 @@ -2.7.6 +2.7.7 pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy