Coder Social home page Coder Social logo

neilxx / ohshown-backend Goto Github PK

View Code? Open in Web Editor NEW

This project forked from oh-shown/ohshown-backend

0.0 0.0 0.0 9.56 MB

OH!SHOWN 野生動物出沒痕跡通報系統

Home Page: http://ohshown.site:8080

License: MIT License

Dockerfile 0.25% Python 97.16% Makefile 0.39% HTML 0.01% Shell 2.14% Procfile 0.06%

ohshown-backend's Introduction

OH!SHOWN Backend

OH!SHOWN 野生動物出沒痕跡通報系統 的後端。提供給 前端 的 API 以及一個管理後台。

本專案為 Disfactory 違章工廠舉報系統 分支,感謝相關社群與人士分享與指教。

分支目前還處於基於 Disfactory 違章工廠舉報系統 程式碼重構施工階段中。 文件、程式碼與單元測試皆尚未更新完畢;歡迎大家直接送重構用程式碼、補丁與 Pull Request 。

Architecture

architecture

跳坑準備


當你想跳坑可是又不知道要用什麼姿勢的時候,可以參考下面的連結

開發環境

API Framework

Database

專案目前的進度與需求

設定開發環境


以下的環境設定都是以 Mac 與 Linux 為主, Windows 的話需要使用 WSL2 + Docker Desktop 才有辦法依照下面的步驟設定。

安裝 WSL2

WSL2 + Docker Desktop

建立 .env

在這個專案 .env 檔是非常重要的檔案,因為 docker-compose 會使用環境變數設定 container 內的環境變數。 並且 django server 在啟動的時候,也會使用 python-dotenv 來讀取 .env 檔。

因此在設定開發環境之前,需要建立一個 .env 檔,內容如下

DISFACTORY_BACKEND_DEFAULT_DB_NAME=disfactory_data
DISFACTORY_BACKEND_DEFAULT_DB_USER=postgres
DISFACTORY_BACKEND_DEFAULT_DB_PASSWORD=postgres
DISFACTORY_BACKEND_DEFAULT_DB_HOST=db
DISFACTORY_BACKEND_DEFAULT_DB_PORT=5432

DISFACTORY_BACKEND_DEFAULT_DB_DEV_PORT=5433

DISFACTORY_ALLOWED_HOST=localhost,127.0.0.1
DISFACTORY_BACKEND_CORS_ORIGIN_WHITELIST=
DISFACTORY_BACKEND_MAX_FACTORY_PER_GET=50

DISFACTORY_BACKEND_LOG_LEVEL=INFO
DISFACTORY_BACKEND_LOG_FILE=/tmp/disfactory.log

DISFACTORY_BACKEND_DEBUG=true
DISFACTORY_BACKEND_PORT=8888

# will be deprecated
DISFACTORY_IMGUR_CLIENT_ID=your_imgur_id
DISFACTORY_BACKEND_MEDIA_ROOT="./images/"
DISFACTORY_BACKEND_DOMAIN="https://api.disfactory.tw/"

也可以直接複製 .env.sample.env

最後我們要使用 .env 來設定目前的環境變數

( 如果使用 pipenv 或 docker 的話可以跳過這一個步驟,因為 pipenv 會自動讀取 .env 的內容來設定環境變數,而 docker container 啟動時會呼叫 pipenv )

source .env

# 測試一下,確認環境變數是否正確
> echo $DISFACTORY_BACKEND_DEFAULT_DB_NAME
disfactory_data

開發環境懶人包 - Docker + docker-compose

如果覺的安裝 Python, pipenv 與 PostgreSQL 等東西很麻煩話,那麼可以選擇完全使用 Docker + docker-compose 作為開發環境。只需要安裝 Dockerdocker-compose 就可以快速運行整個後端服務。

安裝方式請參考

有安裝 make 的話可以直接使用

make run-dev

或使用 docker-compose 指令來啟動

docker-compose -f docker-compose.dev.yml up -d

更詳細的使用方式請看

Setup with docker-compose

在本機上安裝與設定開發環境

設定 Python 環境

請確認系統是否有安裝 Python 3.7, 如果是 Linux, Mac 或 Windows WSL 環境的話可以使用 pyenv 來安裝特定版本的 Python。

安裝 poetry

osx / linux / bashonwindows install instructions

curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -

windows powershell install instructions

(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python -

詳細可以參考 poetry poetry

設定 PostgreSQL + PostGIS

PostgreSQL 與 PostGIS 有兩種設定方式,可以使用 Docker + docker-compose 啟動 PostGIS 的 Container。 或者是在本機系統上安裝 PostGIS + PostgreSQL Server

使用 Docker + docker-compose

docker-compose -f docker-compose.dev.yml run --service-ports -d db

有安裝 make 的話也可以使用 make run-db 來啟動

這個指令只會啟動 docker-compose.dev.yml 裡面的 db service,並且將 container 的 5432 port 對應到 .env 內的 DISFACTORY_BACKEND_DEFAULT_DB_DEV_PORT 指定的 port ( .env.example 裡面是 5433 )

在 container 啟動之後,還需要設定 .env 裡面的 DISFACTORY_BACKEND_DEFAULT_DB_HOST127.0.0.1。 這樣當你在本機上啟動 django server 的時候,他才能正確的連到 db。

P.S

最好先使用 make run-dev 或者 docker-compose -f docker-compose.dev.yml up -d 啟動一次所有服務,讓 django 初始化 db 資料,db 才能正常運作。 若 pipenv 有新的套件,為了更新 docker image(不然會用 cache),則需要 docker-compose -f docker-compose.dev.yml up -d --build --force-recreate

不然就必須在 db 啟動之後,使用 python manage.py migrate 來初始化 db

在本機端上安裝 PostgreSQL + PostGIS

手動設定 PostgreSQL 與 PostGIS

啟動 django server

如果想要在本機端啟動 django server 來進行測試的話,可以用下面的指令啟動 django 的測試 server。

python manage.py runserver

測試

如果有安裝 make 的話,可以使用

make test

來使用 docker 執行所有的 unittest

API

https://g0v.hackmd.io/FZFghtuoQ0aaGIl9xXzuKw#API

ohshown-backend's People

Contributors

aaronverywin avatar aelcenganda avatar darrenjhsu avatar deeper747 avatar dependabot[bot] avatar diaoga avatar eaglec0318 avatar jenhaoyang avatar joshuay1 avatar littlewhiteya avatar loooffy avatar mhshih avatar neilxx avatar nooboriented avatar oriyar avatar pm5 avatar stegben avatar swind avatar tai271828 avatar thehyyu avatar tobyooo avatar yellowsoar avatar yoyo930021 avatar yukaii avatar zztin avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.