From b670655afc9e96913dea521cd1e274218ce95f09 Mon Sep 17 00:00:00 2001 From: Ali Baker Date: Fri, 25 Dec 2020 01:24:05 +0200 Subject: [PATCH] =?UTF-8?q?Update=20Readme=20file=20with=20API=20swagger?= =?UTF-8?q?=20docs=20=F0=9F=93=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 15 ++++++++++----- resources/BackendAPI.png | Bin 0 -> 16805 bytes 2 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 resources/BackendAPI.png diff --git a/README.md b/README.md index 42cc13b..9830bee 100644 --- a/README.md +++ b/README.md @@ -20,8 +20,8 @@ Urless is written in Python, using Redis as its primary database.( TODO redisgea Download the latest version of URLess via this image 'alivx/urless'. ```Bash -docker-compose build -docker-compose up +docker-compose build #To build project +docker-compose up #To run project, You can use `-d` option to run it in the background. ``` To test service run CURL command: @@ -44,12 +44,17 @@ In point 2, just use `DYNACONF_[valueName]`, for example, in our API there is a If you want to use a custom config under docker-compose, just add it under `environment` section as explained above. -docker-compose-env-vars +docker-compose-env-vars You can change value for each service config under file `settings.yaml` -frontend-config +frontend-config For nginx, you must change the config file under `infrastructure/nginx/urless.conf` if you changes `frontend` container name or port. -nginx \ No newline at end of file +nginx + + +---- +You can check the API documntion by `/docs` +APiDocs diff --git a/resources/BackendAPI.png b/resources/BackendAPI.png new file mode 100644 index 0000000000000000000000000000000000000000..7f66008498e179bf1f322d7529b80e1c9782b502 GIT binary patch literal 16805 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 literal 0 HcmV?d00001