forked from hotosm/fAIr
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request hotosm#138 from hotosm/enhance/docker
Enhance Docker
- Loading branch information
Showing
9 changed files
with
244 additions
and
85 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,17 +1,19 @@ | ||
DEBUG=True | ||
SECRET_KEY=yl2w)c0boi_ma-1v5)935^2#&m*r!1s9z9^*9e5co^08_ixzo6 | ||
DATABASE_URL=postgis://postgres:admin@pgsql:5432/ai | ||
EXPORT_TOOL_API_URL=http://44.203.33.53:8000/raw-data/current-snapshot/ | ||
CORS_ALLOWED_ORIGINS=http://localhost:3000 | ||
GDAL_LIBRARY_PATH='' | ||
MAXAR_CONNECT_ID= | ||
EXPORT_TOOL_API_URL=https://galaxy-api.hotosm.org/v1/raw-data/current-snapshot/ | ||
CORS_ALLOWED_ORIGINS=http://127.0.0.1:3000 | ||
OSM_CLIENT_ID= | ||
OSM_CLIENT_SECRET= | ||
OSM_URL=https://www.openstreetmap.org | ||
OSM_SCOPE=read_prefs | ||
OSM_LOGIN_REDIRECT_URI=http://127.0.0.1:8000/api/v1/auth/callback/ | ||
OSM_LOGIN_REDIRECT_URI=http://127.0.0.1:3000/authenticate/ | ||
OSM_SECRET_KEY= | ||
CELERY_BROKER_URL="redis://redis:6379/0" | ||
CELERY_RESULT_BACKEND="redis://redis:6379/0" | ||
RAMP_HOME="/home/kshitij/hotosm/fAIr-utilities" | ||
TRAINING_WORKSPACE="/home/kshitij/hotosm/fAIr/backend/training" | ||
TESTING_TOKEN= | ||
RAMP_HOME="/RAMP_HOME" | ||
TRAINING_WORKSPACE="/TRAINING_WORKSPACE" | ||
|
||
TESTING_TOKEN= | ||
GDAL_LIBRARY_PATH='' | ||
MAXAR_CONNECT_ID= |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
version: '3.8' | ||
|
||
services: | ||
postgres: | ||
restart: always | ||
image: postgis/postgis | ||
container_name: pgsql | ||
environment: | ||
- POSTGRES_DB=ai | ||
- POSTGRES_USER=postgres | ||
- POSTGRES_PASSWORD=admin | ||
ports: | ||
- '5434:5432' | ||
|
||
redis: | ||
image: redis | ||
container_name: redis | ||
ports: | ||
- "6379:6379" | ||
|
||
backend-api: | ||
build: | ||
context: ./backend | ||
dockerfile: Dockerfile | ||
container_name: api | ||
command: python manage.py runserver 0.0.0.0:8000 | ||
deploy: | ||
resources: | ||
reservations: | ||
devices: | ||
- driver: nvidia | ||
capabilities: [gpu] | ||
ports: | ||
- 8000:8000 | ||
volumes: | ||
- ${RAMP_HOME}:/RAMP_HOME | ||
- ${TRAINING_WORKSPACE}:/TRAINING_WORKSPACE | ||
depends_on: | ||
- redis | ||
- postgres | ||
|
||
backend-worker: | ||
build: | ||
context: ./backend | ||
dockerfile: Dockerfile | ||
container_name: worker | ||
command: celery -A aiproject worker --loglevel=INFO | ||
deploy: | ||
resources: | ||
reservations: | ||
devices: | ||
- driver: nvidia | ||
capabilities: [gpu] | ||
volumes: | ||
- ${RAMP_HOME}:/RAMP_HOME | ||
- ${TRAINING_WORKSPACE}:/TRAINING_WORKSPACE | ||
depends_on: | ||
- backend-api | ||
- redis | ||
- postgres | ||
|
||
worker-dashboard: | ||
image: mher/flower | ||
container_name: flower | ||
command: celery --broker=redis://redis:6379// flower --address=0.0.0.0 --port=5000 | ||
ports: | ||
- 5500:5000 | ||
depends_on: | ||
- backend-api | ||
- redis | ||
- backend-worker | ||
|
||
frontend: | ||
build: | ||
context: ./frontend | ||
dockerfile: Dockerfile.frontend | ||
container_name: frontend | ||
command: npm start -- --host 0.0.0.0 --port 3000 | ||
ports: | ||
- 3000:3000 | ||
depends_on: | ||
- backend-api |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
Docker Compose is created with redis , worker , postgis database , api and frontend all in one making it easy for development . For production it is not recommended | ||
|
||
## [DEV] Installation With Docker | ||
|
||
1. Clone Repo | ||
|
||
``` | ||
git clone https://github.com/hotosm/fAIr.git | ||
``` | ||
|
||
2. Get Docker Compose Installed | ||
|
||
If docker is not installed , Install it from [here](https://docs.docker.com/engine/install/) | ||
``` | ||
docker compose version | ||
``` | ||
|
||
3. Check your Graphics | ||
|
||
fAIr works best with graphics card. It is highly recommended to use graphics card . It might not work with CPU only . Nvidia Graphics cards are tested | ||
|
||
You need to make sure you can see your graphics card details and can be accessed through docker by installing necessary drivers | ||
|
||
By following command you can see your graphics and graphics driver details | ||
``` | ||
nvidia-smi | ||
``` | ||
|
||
4. Clonse Base Model and Create RAMP_HOME | ||
|
||
- Create a new folder called RAMP , outside fAIr | ||
|
||
``` | ||
mkdir ramp | ||
``` | ||
- Download BaseModel Checkpoint from [here](https://drive.google.com/file/d/1wvJhkiOrSlHmmvJ0avkAdu9sslFf5_I0/view?usp=sharing) | ||
|
||
``` | ||
pip install gdown | ||
gdown --fuzzy https://drive.google.com/file/d/1wvJhkiOrSlHmmvJ0avkAdu9sslFf5_I0/view?usp=sharing | ||
``` | ||
- Clone Ramp Code | ||
|
||
``` | ||
git clone https://github.com/kshitijrajsharma/ramp-code-fAIr.git ramp-code | ||
``` | ||
- Unzip downloaded basemodel and move inside ramp-code/ramp | ||
|
||
``` | ||
unzip checkpoint.tf.zip -d ramp-code/ramp | ||
``` | ||
- Export Env variable for RAMP_HOME | ||
Grab the file path of folder we created earlier ```ramp``` and export it as env variable | ||
``` | ||
export RAMP_HOME=/home/YOUR_RAMP_LOCATION | ||
``` | ||
eg : export RAMP_HOME=/home/kshitij/ramp | ||
|
||
5. Register your Local setup to OSM | ||
|
||
- Go to [OpenStreetMap](https://www.openstreetmap.org/) , Login/Create Account | ||
- Click on your Profile and Hit ```My Settings``` | ||
- Navigate to ```Oauth2 Applications``` | ||
- Register new application | ||
- Check permissions for ```Read user preferences``` and Redirect URI to be ```http://127.0.0.1:3000/authenticate/``` , Give it name as ```fAIr Dev Local``` | ||
- You will get ```OSM_CLIENT_ID``` , ```OSM_CLIENT_SECRET``` Copy them | ||
|
||
6. Create Env variables | ||
- Create a file ```.env``` in backend with [docker_sample_env](../backend/docker_sample_env) content | ||
``` | ||
cp docker_sample_env .env | ||
``` | ||
- Fill out the details of ```OSM_CLIENT_ID``` &```OSM_CLIENT_SECRET``` in .env file and generate a unique key & paste it to ```OSM_SECRET_KEY``` (It can be random for dev setup) | ||
|
||
Leave rest of the items as it is unless you know what you are doing | ||
- Export ```TRAINING_WORKSPACE``` Env | ||
Training workspace is the folder where fAIr will store its training files | ||
for eg : | ||
``` | ||
export TRAINING_WORKSPACE=/home/kshitij/hotosm/fAIr/trainings | ||
``` | ||
- Create ```.env``` in /frontend | ||
``` | ||
cp .env_sample .env | ||
``` | ||
You can leave it as it is for dev setup | ||
|
||
7. Build & Run containers | ||
|
||
``` | ||
docker compose build | ||
``` | ||
|
||
``` | ||
docker compose up | ||
``` | ||
|
||
8. Run Migrations | ||
|
||
See Running containers grab their ID and launch bash to make migrations (This is needed for the first time to set database) | ||
|
||
docker container ps | ||
|
||
Grab Container ID & Open Bash | ||
|
||
docker exec -it CONTAINER_ID bash | ||
|
||
|
||
Once Bash is promoted hit following commands | ||
|
||
python manage.py makemigrations | ||
python manage.py makemigrations login | ||
python manage.py makemigrations login | ||
python manage.py migrate | ||
|
||
9. Play and Develop | ||
|
||
Restart containers | ||
|
||
``` | ||
docker compose restart | ||
``` | ||
|
||
Frontend will be available on 5000 port , Backend will be on 8000 , Flower will be on 5500 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
REACT_APP_CONNECT_ID= | ||
REACT_APP_TM_API=https://tasking-manager-tm4-production-api.hotosm.org/api/v2/projects/PROJECT_ID/tasks/ | ||
REACT_APP_ENV=Dev | ||
REACT_APP_API_BASE=http://localhost:8000/api/v1 | ||
REACT_APP_API_BASE=http://127.0.0.1:8000/api/v1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
|
||
FROM node:16.14.2 | ||
|
||
WORKDIR /app | ||
|
||
|
||
COPY . /app | ||
|
||
|
||
RUN npm install --legacy-peer-deps | ||
|
||
|
||
# RUN npm run build | ||
|
||
# EXPOSE 3000 |