chore: repo 정리 — entrypoint.sh 추가, runtime state gitignore
- entrypoint.sh: 첫 부팅 시 assign_teams.py 자동 실행 (시드) - Dockerfile: ENTRYPOINT 적용, DATA_PATH=/app/data/hackathon.json - hackathon.json (root) 삭제 — data/ 디렉터리로 이전 (gitignore) - teams.md 추적 해제 (assign_teams.py가 매번 재생성) - results_*.json + data/ gitignore 추가 - .env.example 삭제 (compose에 ADMIN_TOKEN 박제, .env 불필요) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,2 +0,0 @@
|
||||
ADMIN_TOKEN=강한-랜덤-토큰-여기-넣기
|
||||
PORT=8501
|
||||
6
.gitignore
vendored
6
.gitignore
vendored
@@ -5,6 +5,10 @@ venv/
|
||||
*.db
|
||||
*.sqlite
|
||||
.env
|
||||
!.env.example
|
||||
.streamlit/secrets.toml
|
||||
.superpowers/
|
||||
|
||||
# 행사 진행 중 생성되는 state (assign_teams.py가 entrypoint에서 자동 시드)
|
||||
data/
|
||||
results_*.json
|
||||
teams.md
|
||||
|
||||
12
Dockerfile
12
Dockerfile
@@ -10,15 +10,11 @@ ENV TZ=Asia/Seoul
|
||||
COPY requirements.txt ./
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
COPY app.py assign_teams.py ./
|
||||
COPY hackathon.json ./
|
||||
COPY app.py assign_teams.py entrypoint.sh ./
|
||||
RUN chmod +x /app/entrypoint.sh
|
||||
|
||||
EXPOSE 8501
|
||||
|
||||
ENV DATA_PATH=/app/hackathon.json
|
||||
ENV DATA_PATH=/app/data/hackathon.json
|
||||
|
||||
CMD ["streamlit", "run", "app.py", \
|
||||
"--server.address=0.0.0.0", \
|
||||
"--server.port=8501", \
|
||||
"--server.headless=true", \
|
||||
"--browser.gatherUsageStats=false"]
|
||||
ENTRYPOINT ["/app/entrypoint.sh"]
|
||||
|
||||
21
entrypoint.sh
Normal file
21
entrypoint.sh
Normal file
@@ -0,0 +1,21 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
# DATA_PATH 비어있으면 assign_teams.py로 부트스트랩.
|
||||
# 호스트 마운트(./data)에 처음 부팅 시 1회 실행.
|
||||
if [ ! -s "$DATA_PATH" ]; then
|
||||
echo "[init] $DATA_PATH 없음/비어있음 → assign_teams.py 실행"
|
||||
mkdir -p "$(dirname "$DATA_PATH")"
|
||||
cd /app
|
||||
python3 assign_teams.py
|
||||
mv /app/hackathon.json "$DATA_PATH"
|
||||
echo "[init] 시드 완료 → $DATA_PATH"
|
||||
else
|
||||
echo "[init] 기존 $DATA_PATH 보존"
|
||||
fi
|
||||
|
||||
exec streamlit run /app/app.py \
|
||||
--server.address=0.0.0.0 \
|
||||
--server.port=8501 \
|
||||
--server.headless=true \
|
||||
--browser.gatherUsageStats=false
|
||||
248
hackathon.json
248
hackathon.json
@@ -1,248 +0,0 @@
|
||||
{
|
||||
"settings": {
|
||||
"voting_open": true
|
||||
},
|
||||
"titles": {},
|
||||
"tie_breaks": {},
|
||||
"votes": [],
|
||||
"people": [
|
||||
{
|
||||
"name": "김호승",
|
||||
"team": "팀1",
|
||||
"dept": "AI Efficiency Tech",
|
||||
"senior": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "유준희",
|
||||
"team": "팀1",
|
||||
"dept": "AI Efficiency Tech",
|
||||
"senior": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "이준석",
|
||||
"team": "팀1",
|
||||
"dept": "MLOps HPC",
|
||||
"senior": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "장다현",
|
||||
"team": "팀1",
|
||||
"dept": "MLOps System",
|
||||
"senior": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "강승형",
|
||||
"team": "팀1",
|
||||
"dept": "MLOps Data",
|
||||
"senior": true,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "서한배",
|
||||
"team": "팀2",
|
||||
"dept": "AI Efficiency Tech",
|
||||
"senior": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "김민섭",
|
||||
"team": "팀2",
|
||||
"dept": "AI Efficiency Tech",
|
||||
"senior": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "유용혁",
|
||||
"team": "팀2",
|
||||
"dept": "MLOps HPC",
|
||||
"senior": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "박영훈",
|
||||
"team": "팀2",
|
||||
"dept": "MLOps System",
|
||||
"senior": true,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "박재호",
|
||||
"team": "팀2",
|
||||
"dept": "MLOps Data",
|
||||
"senior": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "이성재",
|
||||
"team": "팀3",
|
||||
"dept": "AI Efficiency Tech",
|
||||
"senior": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "이재광",
|
||||
"team": "팀3",
|
||||
"dept": "AI Efficiency Tech",
|
||||
"senior": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "김영관",
|
||||
"team": "팀3",
|
||||
"dept": "MLOps HPC",
|
||||
"senior": true,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "정채윤",
|
||||
"team": "팀3",
|
||||
"dept": "MLOps System",
|
||||
"senior": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "변수민",
|
||||
"team": "팀3",
|
||||
"dept": "MLOps Data",
|
||||
"senior": true,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "심성환",
|
||||
"team": "팀4",
|
||||
"dept": "AI Efficiency Tech",
|
||||
"senior": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "유지원",
|
||||
"team": "팀4",
|
||||
"dept": "AI Efficiency Tech",
|
||||
"senior": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "오근현",
|
||||
"team": "팀4",
|
||||
"dept": "MLOps HPC",
|
||||
"senior": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "장혁진",
|
||||
"team": "팀4",
|
||||
"dept": "MLOps System",
|
||||
"senior": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "손현준",
|
||||
"team": "팀4",
|
||||
"dept": "MLOps Data",
|
||||
"senior": true,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "정현준",
|
||||
"team": "팀5",
|
||||
"dept": "AI Efficiency Tech",
|
||||
"senior": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "조민정",
|
||||
"team": "팀5",
|
||||
"dept": "AI Efficiency Tech",
|
||||
"senior": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "김재현",
|
||||
"team": "팀5",
|
||||
"dept": "MLOps HPC",
|
||||
"senior": false,
|
||||
"notes": "최주니어"
|
||||
},
|
||||
{
|
||||
"name": "김병훈",
|
||||
"team": "팀5",
|
||||
"dept": "MLOps System",
|
||||
"senior": true,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "한지승",
|
||||
"team": "팀5",
|
||||
"dept": "MLOps Platform",
|
||||
"senior": true,
|
||||
"notes": "지각 가능"
|
||||
},
|
||||
{
|
||||
"name": "이정태",
|
||||
"team": "팀6",
|
||||
"dept": "AI Efficiency Tech",
|
||||
"senior": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "최호진",
|
||||
"team": "팀6",
|
||||
"dept": "MLOps HPC",
|
||||
"senior": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "김정명",
|
||||
"team": "팀6",
|
||||
"dept": "MLOps HPC",
|
||||
"senior": true,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "길주현",
|
||||
"team": "팀6",
|
||||
"dept": "MLOps System",
|
||||
"senior": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "서희",
|
||||
"team": "팀6",
|
||||
"dept": "MLOps System",
|
||||
"senior": true,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "이준형",
|
||||
"team": "팀7",
|
||||
"dept": "AI Efficiency Tech",
|
||||
"senior": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "전효준",
|
||||
"team": "팀7",
|
||||
"dept": "MLOps HPC",
|
||||
"senior": true,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "이지환",
|
||||
"team": "팀7",
|
||||
"dept": "MLOps System",
|
||||
"senior": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"name": "김동국",
|
||||
"team": "팀7",
|
||||
"dept": "MLOps Data",
|
||||
"senior": false,
|
||||
"notes": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
15
teams.md
15
teams.md
@@ -1,15 +0,0 @@
|
||||
# 해커톤 팀 배정 (확정)
|
||||
- 시드: `20260435`
|
||||
- 총 34명, 7팀, 사이즈 [5, 5, 5, 5, 5, 5, 4]
|
||||
- 김태현: 진행요원 (참여 X)
|
||||
- ⭐ 시니어, 🌱 최주니어, ⏰ 지각 가능
|
||||
|
||||
| 팀 | 인원 | 시니어 | 멤버 |
|
||||
|---|---|---|---|
|
||||
| 팀1 | 5 | 1 | 김호승, 유준희, 이준석, 장다현, 강승형⭐ |
|
||||
| 팀2 | 5 | 1 | 서한배, 김민섭, 유용혁, 박영훈⭐, 박재호 |
|
||||
| 팀3 | 5 | 2 | 이성재, 이재광, 김영관⭐, 정채윤, 변수민⭐ |
|
||||
| 팀4 | 5 | 1 | 심성환, 유지원, 오근현, 장혁진, 손현준⭐ |
|
||||
| 팀5 | 5 | 2 | 정현준, 조민정, 김재현🌱, 김병훈⭐, 한지승⭐⏰ |
|
||||
| 팀6 | 5 | 2 | 이정태, 최호진, 김정명⭐, 길주현, 서희⭐ |
|
||||
| 팀7 | 4 | 1 | 이준형, 전효준⭐, 이지환, 김동국 |
|
||||
Reference in New Issue
Block a user