koyeb(heroku 대체제) 으로 flask 배포하기



## koyeb 선택 이유

2015년부터 잘 쓰던 heroku(무료 플랜)가 곧 무료 플랜을 종료한다고 해서 대체제를 찾아봤다.

fly.io, render.com 등을 확인해봤는데 fly.io 는 카드를 등록해야해서 탈락.

render.com 는 괜찮은 것 같았는데 가격 대비 서비스가 미세하게나마 koyeb이 좋아서 선택.

CPU 1 / RAM 512 / SSD 5G 가 무료라고 되어 있다.

정확히는 5달러를 주고 저 플랜을 5.4달러에 제공해서 0.4달러를 내야하는 것 같은데... 아래 이미지처럼 되어 있어서 일단 한 달 써보려고 한다.

0.4달러를 내야하면 render.com 로 가면 되니.

<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipAZaha3ZWCXoZDh8Xjq2ZNvZtabWKBZcpYdJenv7b08DDfLe9oq0hbhMY_jY1Zmp3oQ2-I4REElFkRvUe6UWlX8vC_0XrVg1LADO5ciGdtE0-6gfmpv8XQcUIYvHi4YXfNfDuXmKpp_Hiu4H0PSQo6t_q8Ac-7wwU0gfKzRbdGioix6mo5NdI3GJAUA/s1600/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-11-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%207.03.08.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="704" data-original-width="2464" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipAZaha3ZWCXoZDh8Xjq2ZNvZtabWKBZcpYdJenv7b08DDfLe9oq0hbhMY_jY1Zmp3oQ2-I4REElFkRvUe6UWlX8vC_0XrVg1LADO5ciGdtE0-6gfmpv8XQcUIYvHi4YXfNfDuXmKpp_Hiu4H0PSQo6t_q8Ac-7wwU0gfKzRbdGioix6mo5NdI3GJAUA/s1600/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-11-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%207.03.08.png"/></a></div><div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLu5SdSavkw3pSuq4_jCamqidZkIW-Ptdk4JmXUNpI40bi01PG8wTffLev9LWKUBiDIH-q3DN7HfsXcyKv4iSDDs-mEFuzTo7N-gNrlwlbUOqZHyteBGLNjX5pcoU7dUTGp6S8lFDVieGF6leh-Gd78vXpf3chE2Z2toCrnZxdwdSwC-PbZ_BwsLfliA/s1600/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-11-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%207.13.26.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="562" data-original-width="2286" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLu5SdSavkw3pSuq4_jCamqidZkIW-Ptdk4JmXUNpI40bi01PG8wTffLev9LWKUBiDIH-q3DN7HfsXcyKv4iSDDs-mEFuzTo7N-gNrlwlbUOqZHyteBGLNjX5pcoU7dUTGp6S8lFDVieGF6leh-Gd78vXpf3chE2Z2toCrnZxdwdSwC-PbZ_BwsLfliA/s1600/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-11-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%207.13.26.png"/></a></div>

배포하는 방법은 별 것 없어서 쓸데없는 말이 길어졌다.


## 배포 방법

아래 이미지대로 쭉 따라하면 된다. 먼저 create app 을 누르고, <b>gunicorn</b> 을 사용하기 때문에 **run command** 에 `gunicorn app:app` 을 작성했다.

<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMWP6mW_7eZO3WFr-AFDjYb-JOOVJyAvCX7JfitjUAs_XocR6MqiOunqiMm9lPliR4OpGwg0aAVMF68BZYG1wrWHdVO9MnhKz6RkHojwLOkpdKyGfonzzSjeSctlZgqCN1BekBXAxoc2vQm30cjKO6HQkSbY1aYeBOh8ZVF3diSbcTG6mXdeP-WZcOHw/s1600/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-11-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%207.19.13.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="532" data-original-width="2348" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMWP6mW_7eZO3WFr-AFDjYb-JOOVJyAvCX7JfitjUAs_XocR6MqiOunqiMm9lPliR4OpGwg0aAVMF68BZYG1wrWHdVO9MnhKz6RkHojwLOkpdKyGfonzzSjeSctlZgqCN1BekBXAxoc2vQm30cjKO6HQkSbY1aYeBOh8ZVF3diSbcTG6mXdeP-WZcOHw/s1600/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-11-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%207.19.13.png"/></a></div><div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu9dQARw5Cz6VeBhoaXWRweF9bGUP2tOmapf6AZJ8NPGgtD7M-eEEuBwUV-R_Ugnw30v7EnauoW9ys3wFo-KEVzj5SbR8O-OcTofIWYW0dewGy1GlCT1ZPp06PX4S9aEN5Tfss9THylVC_szKy0rR21c0gCVz1r0srDIEBWl9a6ixXUrZfECPjeclPew/s1600/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-11-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%207.21.22.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="876" data-original-width="2330" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu9dQARw5Cz6VeBhoaXWRweF9bGUP2tOmapf6AZJ8NPGgtD7M-eEEuBwUV-R_Ugnw30v7EnauoW9ys3wFo-KEVzj5SbR8O-OcTofIWYW0dewGy1GlCT1ZPp06PX4S9aEN5Tfss9THylVC_szKy0rR21c0gCVz1r0srDIEBWl9a6ixXUrZfECPjeclPew/s1600/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-11-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%207.21.22.png"/></a></div><div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYEwSG46E2vuQzZccGYyonmVlyluJe5MtJjIbNcMyzRJM4GLsaDbSVApguuRRO6jxgb8zxtKPAvqLkd9OUa5Gulgmh5WavVGlcDgfUKtbGuEhHNgiYJqhnQh_xgSG_8skzfeDYzYnxnJBdWs8eL7nXU6Y13E5g43pot4bu7P57SHX0FyakHK4BB5Y2Cw/s1600/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-11-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%207.21.57.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="1286" data-original-width="2278" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYEwSG46E2vuQzZccGYyonmVlyluJe5MtJjIbNcMyzRJM4GLsaDbSVApguuRRO6jxgb8zxtKPAvqLkd9OUa5Gulgmh5WavVGlcDgfUKtbGuEhHNgiYJqhnQh_xgSG_8skzfeDYzYnxnJBdWs8eL7nXU6Y13E5g43pot4bu7P57SHX0FyakHK4BB5Y2Cw/s1600/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-11-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%207.21.57.png"/></a></div><div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvEvSDpi7PDXY6jbz2A0eJXrLFlCU8ly_p3cVAnJFx4MO9a9XpW0t_4RCj_8qc5-p8Kbgmya67p6JovFrynER0c0LZcpse2y-OAPfaESPTtqWaYiU13JBeBM2-luZIsui083MoupYQZIq88nEcHofWF0qJQUJlSF2LG1hfJD3c8gvKM73xqOKzeI_ZBA/s1600/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-11-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%207.22.50.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="1394" data-original-width="2324" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvEvSDpi7PDXY6jbz2A0eJXrLFlCU8ly_p3cVAnJFx4MO9a9XpW0t_4RCj_8qc5-p8Kbgmya67p6JovFrynER0c0LZcpse2y-OAPfaESPTtqWaYiU13JBeBM2-luZIsui083MoupYQZIq88nEcHofWF0qJQUJlSF2LG1hfJD3c8gvKM73xqOKzeI_ZBA/s1600/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-11-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%207.22.50.png"/></a></div>

만약 python version 을 고정하고 싶다면 추가 작업이 필요하다.

`root` directory 에 `runtime.txt` 파일을 추가하고 `python-3.9.15` 라고 명시하면 된다.

해당 작업을 하지 않으면 koyeb이 알아서 파이썬 버전을 정해서 빌드한다.

배포는 이렇게하면 끝이다. 적고 나니까 render.com 도 올려 봐야겠다는 생각이 든다. 뭐가 더 간단하려나.



댓글

이 블로그의 인기 게시물

부트스트랩 사용 시 버튼 오른쪽 정렬하는 방법 (How to use float-right for right align in bootstrap)

맥(Mac)에서 MySql 사용 시 Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 오류가 발생하는 경우 해결 방법

HTML, CSS - footer fixed (foot 하단 고정 시키기)