python:3.12.4 이미지로 만든 uvicorn 서버 컨테이너의 그누보드6

python:3.12.4 이미지로 만든 uvicorn 서버 컨테이너의 그누보드6

QA

python:3.12.4 이미지로 만든 uvicorn 서버 컨테이너의 그누보드6

본문

python:3.12.4이미지 기반인 uvicorn 서버(컨테이너)에서 그누보드6를 실행하려고,

Python FastAPI와 그누보드6의 PHP(https://glitter.kr/apm)를 함께 운영할 수 있도록 설정하였습니다.

 -- network_mode: host

 

Dockerfile


FROM python:3.12.4
 
COPY requirements.txt .
 
RUN pip install --upgrade pip && \
    pip install --no-cache-dir -r requirements.txt
 
WORKDIR /mnt/VOL1/mmglitter
 
COPY . .
 
EXPOSE 8002
 
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8002"]

 

docker-compose.yml

version: '3.8'
 
services:
  mmglitter:
    container_name: con_mmglitter
    build:
      context: .
    network_mode: host
    volumes:
      - /mnt/VOL1/mmglitter:/mnt/VOL1/mmglitter
      - /mnt/VOL1/hwi:/mnt/VOL1/hwi

 

>>> python:3.12.4 이미지로 만든 컨테이너(uvicorn 서버)로 

그누보드6(https://policy.glitter.kr/qa_php/gu6_con_inst.png)을 실행하고.

"자유게시판"에 글쓰기를 하였더니,

다음과 같은 에러(https://policy.glitter.kr/qa_php/gu6_con_inst_error.png)가 납니다.

 

{"detail":[{"type":"int_parsing","loc":["body","parent_id"],"msg":"Input should be a valid integer, unable to parse string as an integer","input":""},{"type":"list_type","loc":["body","bf_file[]"],"msg":"Input should be a valid list","input":{"filename":"","file":{"_file":{},"_max_size":1048576,"_rolled":false,"_TemporaryFileArgs":{"mode":"w+b","buffering":-1,"suffix":null,"prefix":null,"encoding":null,"newline":null,"dir":null,"errors":null}},"size":0,"headers":{"content-disposition":"form-data; name=\"bf_file[]\"; filename=\"\"","content-type":"application/octet-stream"}}}]}

 

detail:"type":"int_parsing","loc":"body","parent_id","msg":"입력은 유효한 정수여야 합니다. 문자열을 정수로 구문 분석할 수 없습니다.","input":"""type":"list_type","loc""body","bf_file[]","msg":"입력은 유효한 목록","입력":"파일 이름":"","파일":_파일":"_최대_크기":1048576,"_롤링":false,"_임시파일인수":{"모드":"w+b","버퍼링":-1,"접미사":null,"접두사":null,"인코딩":null,"줄바꿈":null,"디렉토리":null,"오류":null}},"크기":0,"헤더":{"콘텐츠-처리":"양식-데이터; 이름=\"bf_file[]\"; 파일 이름=\"\,콘텐츠-유형":"응용 프로그램/옥텟-스트림

.                               ※       https://test.glitter.my       ※

.

>>> 에러 메시지는 두 가지 문제를 지적하는데 ~~

1.  "Input should be a valid integer, unable to parse string as an integer"

    parent_id 값이 정수여야 하는데, 문자열로 전달됨

  -- parent_id 필드는 정수를 요구하는데, 빈 문자열이 전달된 것 같습니다.

2.  "Input should be a valid list"

    bf_file 필드가 리스트여야 하는데, 잘못된 형식의 값이 전달됨

  --  bf_file[] 필드가 리스트 형식이어야 하는데, 빈 파일 객체가 전달되는 것 같습니다.

 

>>> 식견이 짧아서 이해가 되지 않습니다.

 

>>> Uvicorn 서버를 컨테이너로 구동하지  않을 시, 정상 작동:  https://glitter.my

>>> Uvicorn 서버를 컨테이너로 구동할 때만 이런 DB 에러가 발생합니다. 

    --  "관리자" 설정은 모두 정상;  "게시판 "저장만  안됩니다.

    ■    관리자: humanpc  . 비번: 1234    ;     https://test.glitter.my

 

       ♤  조언 부탁드립니다  ♤

이 질문에 댓글 쓰기 :

답변 2

안녕하세요~ 혹시 해결 하셨나요?

 

개발 환경은 다르고, 같은 상황인데

 

게시판 글 생성에서 parent_id 가 비어있다는 에러가 나고,

 

꼭 board 가 아니어도(admin 이어도) html form 에서 리스트 형태 '[]' 로 데이터를 보내는데서 에러가 납니다.

 

소셜로그인 하는 부분에서 네이버, 카카오 등 체크하고 확인 눌러보면 '[]' 같은 에러가 나요.

 

그래서 리스트 형태로 데이터를 받아오는데 에러가 나길래 처음에는 파이썬 버전 문제인가 생각했었습니다.

 

 

 

.    사용 중이던 홈서버를 새로이(DS923+) 바꾸어 가며,

  한 달을 넘겨 삽질 중이나, 해결책을 못 찾았습니다. > https://sir.kr/qa/544314

  ♠♠♠ 사용 중이던 그누보드6도 업그레이드 이후, 에러가 발생하여,

    >>> 기존 data 수정은 되나 새로운 게시글 저장이 안되는 중입니다.

    === 기존의 g6 테스트 하기 : https://m.glitter.kr/board/write/test

  전문인 들의 도움의 글도 없으며,

  '엉뚱 하게 삼천포로 유도 하는 답글이나 붙이는 이'는 누구인 지 ???

>>> DB에는 문제가 없다는데,
 
  ♠♠♠ 에러의 원인은 ;

  ※ "g6의 FastAPI 애플리케이션에서 DB의 parent_id 필드(테이블)에 숫자가 아닌 빈 문자열의

    입력을 요청 하여서 발생한 것으로 보인답니다."
 
      >>> 이 문제는 주로 클라이언트(그누6 사용자)에서 데이터를 잘못 전송했거나,
       
    해당 필드가 필수인데 누락된 경우에 발생할 수 있습니다.

    >>> 누락된 경우 란 ;

      "FastAPI 쪽(g6-FastAPI 애플리케이션)에서 parent_id 필드에

      기본값을 설정(초기 설치시)하거나  데이터가 들어오지 않으면

      기본값을 넣어주는 로직이 있어야 한다"는데,

      ~~~ 없다는 ~~~

  ♠♠♠ g6-FastAPI 애플리케이션, 원본 의 로직 문제로  사용자가 수정하여야 한다면,

            = = = 공지가 있었을 것인데 . . .

              . . .  "그누보드6의 계발을 멈춘 것인가?" 싶습니다 !!!

답변을 작성하시기 전에 로그인 해주세요.
전체 17
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT