-
Notifications
You must be signed in to change notification settings - Fork 4
Backend
๋ ํฌ์งํ ๋ฆฌ๋ฅผ ํด๋ก ํ์ฌ 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
> ./run_test.py
์ฅ๊ณ ์ test ๋ชจ๋์ ์ด์ฉํฉ๋๋ค. ๊ฐ๊ฐ์ App(account, announcement ๋ฑ)์๋ tests.py ํ์ผ์ด ์๊ณ , testcase๊ฐ ์ ์๋์ด ์์ต๋๋ค.
github action๋ฅผ ํตํด Test๋ฅผ ์๋ํํ๊ณ ์๊ณ , master branch์ .github/workflows๋ฅผ ํฌํจํ์ฌ pr ์ ์งํ๋ฉ๋๋ค.