programming

cryptography 오류시 대처법

by TAEGON


Posted on May 10, 2021, 4:50 p.m.


random_image

많은 독자님들께서 docker로 넘어가는 단계에서 cryptography 라이브러리가 설치 실패하면서 어려움을 호소하고 있습니다. requirement.txt가 독자분들마다 조금씩 다르고, 호스트 OS에 따라 결과 역시 다른 것으로 파악이 되었습니다. 책을 저술할 당시에 모든 코드가 작동하는 것을 확인하였음에도 불구하고, 출판 이후 많은 분들이 질문을 주셔서 비교적 간단한 해결법을 다음과 같이 정리하였습니다.

해당 문제는 aws lightsail에서 OS를 aws linux 2를 선택하시면 큰 어려움 없이 해결할 수 있었습니다. 우분투가 처음 사용하기에 편리하고, 인터넷에서 관련 사용법을 찾기 쉽기 때문에 저희 책에서 우분투를 권해드렸는데, 이렇게 배포과정에서 어려움을 겪게 해드려 죄송스럽게 생각합니다. aws linux 2는 aws에서 관리하는 배포판으로 aws에서 추천하는 OS이기도 합니다. 사용해보시면, 기본적으로 설치되어 있는 프로그램이 별로 없지만, 덕분에 더 빠르게 인스턴스가 생성되는 것을 느낄 수 있을 겁니다.

OS를 바꾸셨다면, 절반은 해결한 셈입니다. 이제 문제는 명령어가 다르다는 점인데요. 패키지 설치를 위해서 apt 대신 yum를 쓴다는 점이 다릅니다. 하지만, 관련 문서를 쉽게 찾을 수 있고, 여기에 제가 간략히 적어드릴텐데, 따라해 보시면 별 문제 없이 진행하실 수 있을겁니다.

  1. sudo amazon-linux-extras install docker -y
  2. sudo service docker start
  3. sudo usermod -a -G docker ec2-user
  4. sudo yum install git -y
  5. sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  6. sudo chmod +x /usr/local/bin/docker-compose
  7. sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

1-3은 도커 설치, 4는 git 설치, 5-7은 docker-compose 설치 과정입니다. 7단계를 마치는데, 1-2분안에 모두 마치실 수 있을겁니다. 3번 절차는 sudo를 쓰지 않더라도 docker를 쓸 수 있도록 해주는 명령인데, 해당 명령은 다음번 로그인부터 적용이 되는 점에 유의해주세요.

이렇게 설치를 끝내시면, 기본적인 환경은 동일합니다. docker를 쓸 수 있고, git를 쓸 수 있으므로, 작업한 파일을 GitHub에서 받아와서 aws linux 2에서 계속 진행할 수 있습니다.

자 이제 최종단계입니다. (2021년 5월 14일 업데이트) 다수의 테스트 결과, alpine OS와 cryptography 간의 호환성이 문제가 되는 것 같습니다. 우리가 쓰는 파이썬 기본 이미지가 알파인 OS 상에 파이썬을 설치한 이미지입니다. 상대적으로 용량이 작아서 널리 이용되는 이미지인데, 현재 상황을 비추어볼때, 독자님들께서 이 부분에서 어려움을 많이 겪고 있는 것 같습니다.

  1. Dockerfile 를 여셔서, FROM python:3.8.0-alpine 를 FROM python:3.8-slim-buster 으로 수정해주시고, RUN apk로 시작하는 2줄은 지워주세요. 기본설치된 라이브러리만으로도 우리 프로젝트에 필요한 라이브러리가 모두 문제없이 설치됩니다.
  2. requirement.txt에 cryptography 을 넣어주세요.

Dockerfile 파일 전체는 다음과 같습니다.

이렇게 변경하고 나면, 우리가 사용하는 장고 컨테이너는 데비안 OS 위에 파이썬을 설치한 이미지 위에서 구동되게 됩니다. cryptography와 다수 라이브러리를 이미 컴파일된 바이너리 파일을 가져다 쓸 수 있기 때문에 이전에 pip 설치할 때 소스코드를 받아서 컴파일하던 것과 비교하여 빌드시간도 단축될 것입니다.

이 과정을 거치고 나니, 호스트OS를 우분투로 사용하더라도 문제가 없을 것으로 생각이 되긴 합니다만, 호스트 OS로서 aws linux 2가 더 가볍고 빠르게 접속할 수 있는 느낌이 있습니다. 서비스를 하는 과정에서 퍼포먼트 측면은 따로 살펴보아야 하겠지만, 개인적으로는 이왕 이글을 따라 aws linux2로 호스트OS를 바꾸셨으면, 유지하시는 편이 좋을 것 같습니다.

고맙습니다.


Leave a Comment:
testing
testing   Aug. 13, 2021, 11:09 a.m.

이 부분은 AWS에서 인스턴스를 생성한 뒤에 그 곳의 터미널에 적는 코드인가요? 무료로 풀어주신 인프런 강좌를 보고 있는데 그렇게 진행하셔서 질문드립니다.

docker-compose build 시 cryptography 오류가 생기는 것은 그 전 부분인 사용자 컴퓨터의 가상환경에서 <docker-compose build> 명령어로 이미지를 만들 때라서 아예 컨테이너를 실행할 수가 없습니다.. 따라서 AWS에 배포하는 단계까지 도달 할 수도 없어 보이구요.

다른 게시물에서 댓글 남겨주신 방법(pip install)도 했지만 같은 오류만 나옵니다.ㅜㅜ

쉽게 풀어서 말씀드리자면 막히는 부분은 책의 568쪽인데 이 게시물에서 제안하신 해결법은 598쪽까지 진행한 뒤 적용할 수 있는 방법처럼 보여서 막막한 기분입니다. 감사합니다.

Updated: Aug. 13, 2021, 11:17 a.m.

kjms0820
kjms0820   Sept. 6, 2021, 12:39 a.m.

저도 testing님과 같은 문제가 발생했는데
"Dockerfile 를 여셔서, FROM python:3.8.0-alpine 를 FROM python:3.8-slim-buster 으로 수정해주시고, RUN apk로 시작하는 2줄은 지워주세요. 기본설치된 라이브러리만으로도 우리 프로젝트에 필요한 라이브러리가 모두 문제없이 설치됩니다."
이 내용만 해도 build가 돼서 접속이 가능했습니다!

Updated: Sept. 6, 2021, 12:39 a.m.

bak
bak   Dec. 21, 2021, 1:10 p.m.

저의 경우도 568p에서 막혔구요, 도커 이미지 build가 안됩니다.
잘 돌아가는데, 맨 마지막에 cannot find and open requirements file
에러로 막혔습니다.

물론 본 게시글과, 아랫 댓글들 내용 다 반영해서 작성했지만요.

Updated: Dec. 21, 2021, 1:10 p.m.

eaoaeaoa
eaoaeaoa   May 10, 2022, 4:13 a.m.

정말 끔찍한 시간낭비였네요 ㅜㅜ

Updated: May 10, 2022, 4:13 a.m.

www.waytothem.com
www.waytothem.com   Sept. 15, 2022, 1:44 p.m.

Yes Sir

Updated: Sept. 15, 2022, 1:44 p.m.

Search