docker7 [Flask] 플라스크 배포(feat.Docker) 1. main.py main.py의 main함수의 app.run부분을 이렇게 설정한다. main에서 app.run()을 써서 아무 설정 없이 그대로 돌아가도록 하면 flask에 기본적으로 내장돼있는 웹서버를 쓰게된다. 로컬에서는 정말 간편하지만 이걸 서버로 배포할 때는 문제가 생긴다. 어떻게 해도 외부접속이 안되기 때문이다. 따라서 app.run() 말고(=로컬호스트127.0.0.1에서만 돌아간다) app.run(host='0.0.0.0')으로 바꿔야 한다. if __name__ == "__main__": app.run(debug=False, host='0.0.0.0', port=5000) 2. waitress_server.py 생성 여기서 main은 위에서 내가 만든 flask 파일이다. main 파일.. 기록/CI&CD 2022. 10. 12. [NLP] Docker로 Konlpy 사용하는 Flask 배포 konlpy는 자바 라이브러리를 내부적으로 실행시키기 때문에 파이썬 코드라도 자바환경이 갖춰져야한다. 하지만 플라스크 배포 시에는 어떻게 해야할 지 방법이 잘 나와있지 않아서 여기저기 자료를 찾아보고 해결한 결과를 정리해둔다. 이 글을 읽기 앞서서, 플라스크의 구조는 [이 방식]으로 구성했다. 1. requirements.txt pip로 이 두 가지를 설치해야한다. JPype1 == 1.4.0 konlpy == 0.6.0 2. main.py 내 플라스크 api일부이다. 이것처럼 konlpy의 라이브러리를 쓰기전에 jpype.attachThreadToJVM()를 호출해야한다. 3. Dockerfile 자바랑 파이썬 같이 있는 이미지를 불러와야한다. openjdk:slim을 사용하면 자바와 파이썬이 동시에 .. 기록/CI&CD 2022. 9. 23. [AWS] 같은 브랜치에 있는 프론트엔드, 백엔드 자동배포하기 (6) Jenkinsfile, vue & springboot Dockerfile 작성 1. 프로젝트 구조 프로젝트 구조는 다음과 같다. Jenkinsfile, frontend폴더, bacnekd폴더가 가장 최상단에 있고 그 밑에 Dockerfile이 있다. 2. Jenkinsfile tools에서 이전에 설치한 메이븐 이름을 쓴다. M3로 설정했으므로 maven "M3"을 적는다. stages는 네 단계로 나눴는데, 다음과 같다. 1) Docker kill 이미 프론트엔드, 백엔드 돌아가고있는 도커가 있다면 멈추고 해당 컨테이너를 지웠다. 만약 그 컨테이너가 없다면 오류가 나면서 빌드가 멈추기 때문에 || 연산을 사용해서 있든 없든 빌드가 계속되도록 했다. 2) Prepare checkout scm 명령어로 깃 레파지토리를 가져온다. 성공한다면 prepare success, 실패한다면 p.. 기록/CI&CD 2022. 8. 18. [AWS] 같은 브랜치에 있는 프론트엔드, 백엔드 자동배포하기 (5) jenkins 컨테이너 내부에 docker 설치 및 Webhook 설정 1. jenkins 컨테이너 내부에 docker 설치 1) sudo, vi, wget 설치 # 컨테이너 접속 docker exec -it jenkins bash apt update apt install vim apt install sudo apt install wget 2) docker 설치 sudo apt update sudo apt install apt-transport-https ca-certificates curl software-properties-common sudo wget -qO- | sh sudo systemctl start docker sudo systemctl enable docker 3) docker.sock 권한변경 sudo chmod 666 /var/run/docker.sock .. 기록/CI&CD 2022. 8. 17. [AWS] 같은 브랜치에 있는 프론트엔드, 백엔드 자동배포하기 (4) Jenkins 설치 및 설정 1. Docker로 Jenkins 설치 1) jenkins 이미지 파일 내려받기 docker pull jenkins/jenkins:lts 2) jenkins 이미지 컨테이너로 실행 ubuntu와 젠킨스 컨테이너 볼륨을 연결한다. ubuntu의 /jenkins 와 컨테이너의 /var/jenkins ubuntu의 /home/ubuntu/.ssh 와 컨테이너의 /root/.ssh ubuntu의 /var/run/docker.sock 와 컨테이너의 /var/run/docker.sock (바깥에 설치된 docker를 jenkins 속 도커에서도 사용할 수 있도록 한다.) 이름은 jenkins, 계정은 root로 한다. docker run -d -p 8080:8080 -p 50000:50000 -v /jenkins:.. 기록/CI&CD 2022. 8. 13. [AWS] 같은 브랜치에 있는 프론트엔드, 백엔드 자동배포하기 (2) Docker, Docker Compose 설치 1. Docker 설치 1) 사전작업 sudo apt update sudo apt install apt-transport-https ca-certificates curl software-properties-common 2) 자동 설치 스크립트 활용 sudo wget -qO- | sh 3) Docker 서비스 실행하기 및 부팅 시 자동 실행 설정 sudo systemctl start docker sudo systemctl enable docker 4) Docker 그룹에 현재 계정 추가 sudo usermod -aG docker ${USER} # ${USER} 대신 ubuntu를 넣어 진행했다. sudo systemctl restart docker 2. Docker Compose 설치 1) 설치 $ sud.. 기록/CI&CD 2022. 8. 11. Docker + Jenkins + Vue docker로 jenkins를 설치하고 gitlab과 연동한 뒤, 어플리케이션을 배포하려고 한다. 1. Docker 설치 도커 허브를 설치한다. https://docs.docker.com/get-docker/ Get Docker docs.docker.com cmd에서 아래와 같이 나온다면 설치된 것이다. 2. Docker로 Jenkins 설치 & 설정 Docker Desktop 실행 Docker Desktop이 실행되고 있어야 한다. 만약 리눅스 관련 오류가 뜬다면 이 페이지에 들어가서 4,5단계를 진행한다. https://docs.microsoft.com/ko-kr/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package .. 기록/CI&CD 2022. 6. 18. 이전 1 다음