Backend/Python & Blockchain
Synology NAS에 python flask 웹서버 구축
romeoh
2025. 7. 18. 13:00
반응형
SSH활성화


ssh 접속
$ ssh romeoh@192.168.0.XX

Docker 설치




로컬에 파일 생성
$ mkdir flask-app
$ cd flask-app
$ touch app.py
$ touch requirements.txt
$ touch Dockerfile
app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello NAS!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
requirements.txt
flask
Dockerfile
FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "app.py"]

파일을 Synology에 업로드 합니다.
Docker 실행
$ sudo docker build -t flask-app .
$ sudo docker run -d -p 8888:5000 --name flask-test flask-app
# static 폴더 제외하기
$ sudo docker run -d \
--name flask-app \
--link mongo \
-v /volume3/docker/flask-app/static:/app/static \
-p 8888:5001 \
flask-app
# container 제거
$ sudo docker ps
$ sudo docker stop flask-test
$ sudo docker rm flask-test



http://192.168.0.16:8888/
접속합니다.
git 서버 구축하기

git 초기화
$ git init


서버에서 커밋하기
# 외부 push 허용
$ git config receive.denyCurrentBranch updateInstead
$ git config user.name "romeoh"
$ git config user.email "romeoh@naver.com"
$ git add .
$ git commit -m "initial commit"

git clone
local에 생성했던 flask-app 폴더는 삭제합니다.
$ cd PROJECT_FOLDER
$ git clone ssh://romeoh@192.168.0.16:/volume3/docker/flask-app


MongoDB설치
$ cd docker
$ mkdir mongodb
$ cd mongodb
$ mkdir data
$ sudo chmod -R 777 /volume3/docker/mongodb/data
$ sudo docker run -d \
--name mongo \
-p 27017:27017 \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=secret123 \
-v /volume3/docker/mongodb/data:/data/db \
mongo:4.4
$ sudo docker ps

docker 명령어
# 현재 docker 컨테이너 확인
$ sudo docker ps -a
# 콘테이너 정지
$ sudo docker rm mongo
# 콘테이너 로그 확인
$ sudo docker logs mongo
# 콘테이너 내부 진입
$ docker exec -it mongo bash
local에서 flask 서버 구동
가상공간 만들기
$ python3 --version
Python 3.11.2
$ python3 -m venv venv
$ source venv/bin/activate
(venv) romeoh@romeoh-MacBook-Pro flask-app %
(venv) $ pip install -r requirements.txt
(venv) $ python app.py

http://127.0.0.1:5001/
local server 접속
flask에서 mongodb 접속
$ pip install pymongo
$ pip freeze > requirements.txt
반응형