-
Notifications
You must be signed in to change notification settings - Fork 3
Backend Guideline
λ ν¬μ§ν 리λ₯Ό ν΄λ‘ νμ¬ docker-compose up -d
λ‘ μλΉμ€λ₯Ό ꡬλνλ©΄ λ€ κ°μ§ 컨ν
μ΄λκ° μ€ν μ€μΈ κ²μ νμΈν μ μμ΅λλ€.
# κ²½λ‘: skku-coding-platform/
> docker-compose up -d
Creating coding-platform ... done
Creating judge-server ... done
Creating oj-postgres ... done
Creating oj-redis ... done
> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4cbee61583f6 skkunpc/coding-platform "/bin/sh -c /app/depβ¦" 21 seconds ago Up 20 seconds (healthy) 0.0.0.0:443->1443/tcp, 0.0.0.0:80->8000/tcp coding-platform
db71de323b0c skkunpc/judge-server "/bin/sh -c /code/enβ¦" 22 seconds ago Up 21 seconds (healthy) 8080/tcp judge-server
86d3d2a3a311 postgres:10-alpine "docker-entrypoint.sβ¦" 22 seconds ago Up 21 seconds 5432/tcp oj-postgres
542a774f06c2 redis:4.0-alpine "docker-entrypoint.sβ¦" 22 seconds ago Up 21 seconds 6379/tcp oj-redis
κ° μ»¨ν μ΄λμ λ΄μ©μ΄ κΆκΈνλ€λ©΄ Docker Guide κΈμ μ°Έκ³ ν΄μ£ΌμΈμ.
pipλ‘ ν¨ν€μ§λ₯Ό μ€μΉλ₯Ό νλ©΄, μ€μΉλ ν¨ν€μ§λ€μ νμ΄μ¬ μ€μΉ λλ ν 리 μμ μ μ₯λ©λλ€. λ°λΌμ pipλ‘ μ€μΉν ν¨ν€μ§λ€μ ν΄λΉ ν¨ν€μ§κ° νμν νμΌ λΏλ§ μλλΌ, λ€λ₯Έ λͺ¨λ νμ΄μ¬ μ€ν¬λ¦½νΈμμ μ¬μ©ν μ μκ²λ©λλ€. νλμ νλ‘μ νΈλ₯Ό μ§ννλ κ²½μ°μλ λ¬Έμ κ° μμ§λ§, μ¬λ¬ νλ‘μ νΈλ₯Ό μ§ννλ κ²½μ°μλ ν¨ν€μ§ κ°μ λ²μ μΆ©λ λ¬Έμ κ° λ°μν μ μμ΅λλ€.
μλ₯Ό λ€μ΄, μ½λ© νλ«νΌμμ μ¬μ©νλ Djangoμ λ²μ μ 3.0μΈλ° λ€λ₯Έ μ§νμ€μ΄λ νλ‘μ νΈμμλ 2.0μ μ¬μ©ν΄μΌ νλ κ²½μ°, Django 2.0κ³Ό Django 3.0μ΄ νΈνλμ§ μλ λΆλΆμμ μ¬λ¬ λ¬Έμ κ° μκΉλλ€.
λ°λΌμ νλμ λ 립λ 곡κ°μ λ§λ€μ΄μ£Όλ 'κ°μ νκ²½'μ΄λΌλ κ²μ μ¬μ©ν©λλ€. μ¦ μμ κ²½μ°μμλ, μ½λ© νλ«νΌμΈ μν κ°μνκ²½ Aμ, κ·Έ μΈμ λ€λ₯Έ νλ‘μ νΈλ₯Ό μν κ°μνκ²½ B(νλ‘μ νΈκ° μ¬λ¬κ°λ©΄ μ¬λ¬κ°μ κ°μνκ²½ μ¬μ©)λ₯Ό λ§λ€μ΄ μ€λλ€. κ·Έλ¦¬κ³ κ°μνκ²½ λ΄μμ pipλ‘ ν¨ν€μ§λ₯Ό μ€μΉλ₯Ό νλ©΄ ν΄λΉ κ°μνκ²½ λλ ν 리 λ΄μ ν¨ν€μ§κ° μ€μΉκ° λ©λλ€. λ°λΌμ κ°μνκ²½ Aμλ Django 3.0μ μ€μΉνκ³ Bμλ Django 2.0μ μ€μΉν΄μ ν¨ν€μ§ κ°μ λ²μ μΆ©λμ΄ μΌμ΄λλ λ¬Έμ λ₯Ό ν΄κ²°ν©λλ€.
λ°λΌμ νμ μ½λλ₯Ό μ€ννκ±°λ μμ ν λλ κ°μνκ²½μ΄ νμ±νλ μνμ¬μΌ ν©λλ€.
νμ΄μ¬ κ°μνκ²½μ΄ λ―μ λΆλ€μ λ€μ κΈμ μ°Έκ³ ν΄μ£ΌμΈμ.
https://docs.python.org/ko/3/library/venv.html
λ€μ λͺ λ Ήμ΄λ‘ νμ΄μ¬ κ°μνκ²½μ μ€μ νκ³ , νμν λΌμ΄λΈλ¬λ¦¬λ₯Ό μ€μΉν©λλ€.
# κ²½λ‘: skku-coding-platform/
> sudo apt install -y python3-venv
> python3 -m venv venv
> source venv/bin/activate
> pip3 install -r backend/deploy/requirements.txt
λ컀 컨ν
μ΄λκ° μλ, λ‘컬μμ testλ₯Ό μ§ννλ €λ©΄ κ°λ°μ© DBλ₯Ό λμμΌ ν©λλ€. init_db.sh
λ₯Ό μ€ννλ©΄ oj-postgres-dev
μ oj-redis-dev
λ κ°μ DBκ° λ컀 컨ν
μ΄λλ‘ μμ±λλ κ²μ νμΈν μ μμ΅λλ€.
# κ²½λ‘: skku-coding-platform/backend/
> ./init_db.sh
+ [[ ! -f manage.py ]]
+ sleep 2
+ docker rm -f oj-postgres-dev oj-redis-dev
Error: No such container: oj-postgres-dev
Error: No such container: oj-redis-dev
+ docker run -it -d -e POSTGRES_DB=onlinejudge -e POSTGRES_USER=onlinejudge -e POSTGRES_PASSWORD=onlinejudge -p 127.0.0.1:5435:5432 --name oj-postgres-dev postgres:10
+ docker run -it -d -p 127.0.0.1:6380:6379 --name oj-redis-dev redis:4.0-alpine
5753d5d9e89eb6c2351aa82d026695d22697785d99285ef9f7efd7570dddd163
> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5753d5d9e89e redis:4.0-alpine "docker-entrypoint.sβ¦" 20 seconds ago Up 19 seconds 127.0.0.1:6380->6379/tcp oj-redis-dev
e2eb7154aaa3 postgres:10 "docker-entrypoint.sβ¦" 21 seconds ago Up 19 seconds 127.0.0.1:5435->5432/tcp oj-postgres-dev
# κ²½λ‘: skku-coding-platform/backend/
> ./run_test.py
Djangoμ test λͺ¨λμ μ΄μ©νμ¬ ν
μ€νΈν©λλ€. κ°κ°μ App (account, announcement λ±) μ testcaseκ° μ μλμ΄ μλ test.py
λ₯Ό ν¬ν¨ν©λλ€. ./run_test.py
μ μ μλ testcase
κ° μνλλ©°, μ°λ¦¬ νλ‘μ νΈμμλ master branch
μ .github/workflows
λ₯Ό ν¬ν¨νμ¬ pull request
μ Testκ° μλμΌλ‘ μ§νλ©λλ€.