한 포스팅에 다 올리려니까 양이 좀 많아보여서 잘랐습니다.
Web Services on the free instance type are automatically spun down after 15 minutes of inactivity. When a new request for a free service comes in, Render spins it up again so it can process the request.
https://docs.render.com/free
Render 에는 GitHub 의 repository에 변경이 생겼을 때, 자동적으로 재 deploy 해주는 기능이 있습니다.
Deploy
계정의 준비가 되었으면 드디어 Deploy 하러 가보겠습니다. 필요한 파일을 gitHub의 repository 에 추가합니다. 필요한 파일은 main.py, keep_alive.py, requirements.txt, Dockerfile 입니다. 이것은 하나의 예시로, 올린 메세지에 자동적으로 반응하는 봇을 만들어보겠습니다. 각자 만들어둔 봇의 소스코드로 대체해주세요. keep_alive() 에 Web 서버를 만들어보겠습니다.
main.py
import discord
import os
from keep_alive import keep_alive
client = discord.Client(intents=discord.Intents.default())
@client.event
async def on_ready():
print('ログインしました')
@client.event
async def on_message(message):
emoji ="👍"
await message.add_reaction(emoji)
TOKEN = os.getenv("DISCORD_TOKEN")
# Web サーバの立ち上げ
keep_alive()
client.run(TOKEN)
이어서 keep_alive.py 파일입니다. Flask를 이용해서 Web 서버를 만듭니다.
keep_alive.py
from flask import Flask
from threading import Thread
app = Flask('')
@app.route('/')
def home():
return "I'm alive"
def run():
app.run(host='0.0.0.0', port=8080)
def keep_alive():
t = Thread(target=run)
t.start()
requirements.txt 파일에는 pip freeze 커맨드 입력을 하여 필요한 라이브러리를 적습니다.
requirements.txt
discord.py==2.1.1
Flask==2.2.3
마지막으로 Dockerfile 입니다. 이것 그대로 작성해주세요.
Dockerfile
FROM python:3.11
WORKDIR /bot
COPY requirements.txt /bot/
RUN pip install -r requirements.txt
COPY . /bot
CMD python main.py
필요한 파일을 GitHub에 push 하는 방법은 따로 포스팅이 있으니 그쪽을 참고해주시기 바랍니다.
https://qiita.com/Pumila/items/b90b7647f39ed3ca2069
GitHub にプロジェクト(リポジトリ)をプッシュする方法 - Qiita
はじめにGitHub にプロジェクト(リポジトリ)をプッシュする手順を簡潔にまとめてみました。Git のインストールWindows の場合下記サイトから Git for Windows をダ…
qiita.com
GitHub의 repository 가 준비되면, Render DashBoard 에서 [New Web Services] 를 선택합니다.
이 시점에 아직 gitHub 와 연동되어 있지 않아 repository 를 찾지 못하는 상황이 있을 수 있습니다. (GitHub 연동에서 로그인은 했는데..?) 우측에서 Connect account] 를 선택하여 GitHub와 연동하기, 아니면 Public Git repository 에서 직접 repository 의 url 를 지정하여 입력해줘도 상관없습니다.
GitHub 와 연동되었다면 지금 사용하려고 하는 repository 에서 [Connect] 를 선택합니다. (URL 을 직접 입력하는 경우는, URL을 입력한 후 [Continue] 를 선택합니다.) 이 작업을 통해 프로젝트 설정화면으로 이동하기 때문에, 적당한 이름을 입력하고 [Region] 란에는 가장 가까운 싱가폴을 선택합니다. [Runtime] 은 "Docker"인 상태로 둡니다. 다음으로 환경변수의 설정을 누릅니다. 스크롤 쭉 내리다보면 화면 좌하단에 [Advanced] 가 있을 겁니다. 이것을 선택하고 밑에 적은 것과 같이 환경변수를 설정해주세요.
설정이 되었으면 [Create Web Service] 를 선택합니다. 자동적으로 deploy가 시작됩니다. 저의 환경에서는 80초 정도 걸렸습니다. deploy가 완료되면 이렇게 web 서버의 URL이 표시될겁니다. 이 URL에 Uptime Robot을 이용하서 정기적으로 반응을 보내도록 할겁니다. url 메모해두세요.