zotero translation-server 관련 오류
지금 우리 프로젝트는 ‘인용 생성’ 기능을 제공하고, 백엔드에서 Zotero API를 쓴다. 구현은 내가 맡진 않았지만, 사용을 위해 Docker로 translation-server를 데몬으로 띄워야 해서 그 부분을 맡았다.
첫번째 시도
처음엔 EC2 인스턴스에 접속해 Dockerfile을 만들고 빌드한 이미지를 바로 데몬으로 띄우려 했다. 빌드는 성공했지만 실행(run)할 때마다 실패했다. 그래서 dockerfile 내용을 조금씩 수정하고 했는데도 도저히 안 되길래 두번째 방법으로 넘어갔다.
두번째 시도
Zotero에서 제공하는 공식 이미지를 pull 받아 구동해 보기로 했다.
https://hub.docker.com/r/zotero/translation-server/tags
https://hub.docker.com/r/zotero/translation-server/tags
hub.docker.com
여기에서 볼 수 있다. 처음엔 latest를 쓰려 했지만, 내 EC2는 AMD(amd64)인데 latest가 ARM이라서 일단 amd에서 가장 최신인 2.0.4(무려 4년 전)를 pull 했다.다행히 이 버전은 잘 돌았다. 기존 서버와 같은 네트워크로 묶고 테스트를 진행했다.
그런데 문제가 생겼다..
요청이 아예 안 들어오는 건 아닌데, 자꾸 문제가 생겼다. translation-server의 로그를 보니까 대체 뭐라고 하는지 알 수 없고;; 그리고 원래 로컬에서는 정상적으로 응답이 오던 파라미터로 테스트를 한 건데도 문제가 생겼다. 원인을 생각해 보니 일단 세 가지로 좁혀졌다.
1. 코드의 문제
2. 통신 문제
3. 버전 문제
1. 코드의 문제 - 이건 항상 배제할 수 없는 문제이기 때문에 넣어봤지만, 사실 가능성이 가장 적다고 생각했다. 로컬에서 이미 테스트를 마친 상태였고, 물론 문제가 있을 수 있지만 테스트 값과 같은 값으로 시도를 했는데 문제가 생겼기 때문이다. 따라서 이는 넘기기로 결정
2. 통신 문제 - 가능성이 꽤 높은 문제라고 생각했다.
2-1. 일단 도커 네트워크의 상세 설정을 확인했다. 도커 네트워크 정보를 확인해 보니 우리 서버랑 translation-server가 같은 네트워크에 있었다. 따라서 이 문제는 아님.
2-2. 서버 컨테이너에서 translation-server로 직접 요청을 보내 통신을 테스트했다. 통신 문제는 없었다.
3. 버전 문제 - 사실 가장 유력한 문제..라고 생각됐다. 아무래도 4년 전 업데이트 된 버전이고, 로컬에서는 최신 버전을 사용해서 테스트를 해보았을 것이기 때문이다.
여기에서 고민을 조금 했다. 솔직히 Dockerfile 다시 손보는 게 귀찮아 “인스턴스를 ARM처럼 쓸 수 없나?” 싶어 GPT에 물었고 그대로 한 번 시도했다. 근데 cpu도 너무 느려지고^^ 용량도 없어서 아예 인스턴스 접속이 안 되길래 그냥 용량을 늘린 뒤 기존 설정은 삭제했다.
결론적으로 로컬에서 Dockerfile로 빌드해 리포지토리에 올리고, EC2에서 pull 받아 돌리기로 했다.
이렇게 하니까 한 번에 해결됐다,,^^
근데 가만 생각해 보면, 왜 인스턴스에서 Dockerfile로 만든 이미지는 run이 안 됐을까? 너무 궁금하다... 같은 도커파일이었는데 대체 뭐가 문제였던건지 모르겠다ㅜㅠㅠㅜ 도커파일 작성 방법에 대해서 조금 더 공부해봐야겠다.