TIL 27. WeAreBnB(2番目のプロジェクト):Dockerを使用して配置
Dockerイメージの作成
Docker Fileを作成すると簡単に画像を作成できます.
my_settgins.pyでデータベースを設定する
Docker Fileを作成する前にmy settgins.データベース設定をPyと組み合わせてAWS RDSを使用する必要があります.
AWS RDSに設定すると、RDSエンドポイントに接続し、データベースを作成してデータを注入する必要があります. DB Data Dump DB Data injection
画像をDockerにする場合は、画像を実行するときに実行する必要があります.DockerFileを作成してtxtを自動的にインストールするため、漏れたライブラリがあるかどうかを確認する必要があります.
Dockerで実行する場合、Gunicornを使用してバックグラウンドでミドルウェアを実行するため、事前にインストールする必要があります.txtに追加します.
DockerFileの作成の新しいブランチを生成し、DockerFileを生成します. manage.pyが存在するレイヤにDockfileというファイルを作成します. Pythonバージョンをカスタマイズし、作業ディレクトリを設定します. requirements.txtを再帰的にインストールし、すべてのソースファイルをイメージにコピーします. ポートは、後で実行するときにポート転送を行うために8000回露出する必要があります. 最後にgunicornをwsgiに貼り付けてバックグラウンドで実行します.
EC 2 Dockerのインストール EC 2 に入る Dockerインストール
ローカルで生成されたDocker画像を取得します.
Dockerイメージを引き出し、イメージを実行してコンテナにします.コンテナ名は直接指定すればいいです.
この場合、画像に基づいてコンテナを実行して接続し、問題を確認できます.ただし、ここで修正しても問題は解決しないので、修正して画像を再生成する必要があります.
zshrcを環境変数としてデータベースまたは複数の値を格納してサーバを構築する場合、EC 2はイメージの実行中にその環境変数を見つけることができません.
EC 2に入って環境変数を設定してもDockerはファイル管理をサポートしません.したがって、画像をローカルに作成し、EC 2で上記の手順と同じ手順を実行することができる.
同じ場合、EC 2でenv.shを生成して、必要な環境変数を収容します.ここで注意したいのは、値「」をすべて削除することです.
Docker Fileを作成すると簡単に画像を作成できます.
my_settgins.pyでデータベースを設定する
Docker Fileを作成する前にmy settgins.データベース設定をPyと組み合わせてAWS RDSを使用する必要があります.
DATABASES = {
'default' : {
'ENGINE': 'django.db.backends.mysql',
'NAME': # [RDS db 이름],
'USER': 'root',
'PASSWORD': # [RDS db 비밀번호],
'HOST': # [RDS db 엔드포인트],
'PORT': '3306',
'OPTIONS': {'charset': 'utf8mb4'}
}
}
DB Data DumpとInjectionAWS RDSに設定すると、RDSエンドポイントに接続し、データベースを作成してデータを注入する必要があります.
$ mysqldump -u root -p [DB이름] > [파일명].sql ⇢ 비밀번호 입력
$ mysql -h [엔드포인트 붙여넣기] -u root -p [AWS db이름] < [파일명].sql ⇢ 비밀번호 입력
requirement.txt確認画像をDockerにする場合は、画像を実行するときに実行する必要があります.DockerFileを作成してtxtを自動的にインストールするため、漏れたライブラリがあるかどうかを確認する必要があります.
Dockerで実行する場合、Gunicornを使用してバックグラウンドでミドルウェアを実行するため、事前にインストールする必要があります.txtに追加します.
DockerFileの作成
#./Dockerfile
FROM python:3.8
## 기반이 될 이미지
# 작업디렉토리(default)설정
WORKDIR /usr/src/app
## Install packages
# 현재 패키지 설치 정보를 도커 이미지에 복사
COPY requirements.txt ./
# 설치정보를 읽어 들여서 패키지를 설치
RUN pip install -r requirements.txt
## Copy all src files
# 현재경로에 존재하는 모든 소스파일을 이미지에 복사
COPY . .
## Run the application on the port 8080
#8000번 포트를 외부에 개방하도록 설정
EXPOSE 8000
#CMD ["python", "./setup.py", "runserver", "--host=0.0.0.0", "-p 8080"]
# gunicorn을 사용해서 서버를 실행
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "config.wsgi:application"]
Dockerイメージの構築$ docker build -t [내 계정]/[프로젝트명]:'버전' .
ex) docker build -t hanasmile/wearebnb:0.1.0 .
EC 2からDockerを配備EC 2 Dockerのインストール
$ ssh -i [파일명.cer] ubuntu@[Ipv4 퍼블릭 IP] # EC2 인스턴스에서 Ipv4 퍼블릭 IP 주소 확인
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
sudo apt update
apt-cache policy docker-ce
Dockerイメージの取得ローカルで生成されたDocker画像を取得します.
$ (aws) docker pull [image name]
Docker RunDockerイメージを引き出し、イメージを実行してコンテナにします.コンテナ名は直接指定すればいいです.
$ (aws) docker run --name [컨테이너명] -d -p [호스트 포트]:[컨테이너 포트][이미지명]
ex) docker run --name wearebnb00 -d -p 8000:8000 hanasmile/wearebnb:0.1.0
構築した画像が様々な理由で問題が発生した場合、docker ps-aコマンドで表示すると、彫像が存在することがわかります.画像に問題があるのでdocker psで確認できません.この場合、画像に基づいてコンテナを実行して接続し、問題を確認できます.ただし、ここで修正しても問題は解決しないので、修正して画像を再生成する必要があります.
$ (aws) docker run -it hanasmile/wearebnb:0.1.0 /bin/bash
my_settings.pyではなく環境変数を使用する場合zshrcを環境変数としてデータベースまたは複数の値を格納してサーバを構築する場合、EC 2はイメージの実行中にその環境変数を見つけることができません.
EC 2に入って環境変数を設定してもDockerはファイル管理をサポートしません.したがって、画像をローカルに作成し、EC 2で上記の手順と同じ手順を実行することができる.
同じ場合、EC 2でenv.shを生成して、必要な環境変数を収容します.ここで注意したいのは、値「」をすべて削除することです.
# env.sh
SECRET_KEY = [시크릿키]
ALGORITHM = HS256
DB_NAME = [AWS db 이름]
DB_USER = root
DB_PASSWORD = [AWS db pw]
DB_HOST = [AWS 엔드포인트]
PORT = 3306
AWS_ACCESS_KEY_ID = [AWS S3 ID]
AWS_SECRET_ACCESS_KEY = [AWS S3 PW]
env.もしあなたが私にshを書いてくれたら、次のコマンドenvを使ってください.shを先に実行し、イメージを実行します.$ (aws) docker run --env-file ./env.sh --name wearebnb00 -d -p 8000:8000 hanasmile/wearebnb:0.1.0
Reference
この問題について(TIL 27. WeAreBnB(2番目のプロジェクト):Dockerを使用して配置), 我々は、より多くの情報をここで見つけました https://velog.io/@hanasmile/TIL-27.-WeAreBnB2차-프로젝트-Docker를-이용한-배포テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol