![](/img/trans.png)
[英]How to deploy an app with multiple Docker containers to AWS Elastic Beanstalk?
[英]Docker Compose and Django app using AWS Lighstail containers fail to deploy
我正在嘗試在最新版本的 Lightsail 上運行 Django 應用程序,該應用程序支持截至 2020 年 11 月部署 docker 容器( AWS Lightsail 容器公告)。
我創建了一個非常小的 Django 應用程序來測試它。 但是,我的容器部署繼續卡住並失敗。
這是我的 Dockerfile:
FROM python:3
ENV PYTHONUNBUFFERED=1
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
這是我的 docker-compose.yml:
version: "3.9"
services:
db:
image: postgres
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
web:
build: .
image: argylehacker/app-stats:latest
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
我想知道幾件事:
web
容器上傳到 Lightsail。 我還應該上傳db
容器嗎?謝謝您的幫助!
這個問題源於對Docker的理解不好。 我之前試圖在我的docker-compose.yml
中包含image: argylehacker/app-stats:latest
以將web
容器上傳到 DockerHub。 這是做事的錯誤方式。 據我現在了解, docker-compose
最有助於編排本地環境,而不是創建可以在容器中運行的 docker 映像。
最重要的是將容器上傳到可以啟動您的服務器的 Lightsail。 當您使用 Docker 時,可以使用CMD
和Dockerfile
的結尾來指定。 在我的情況下,我需要將此行添加到我的Dockerfile
:
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
所以現在它看起來像這樣:
FROM python:3
ENV PYTHONUNBUFFERED=1
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
CMD ["python", "manage.py", "runserver", "2.0.0.0:8000"]
最后,我從我的docker-compose.yml
文件中刪除了image: argylehacker/app-stats:latest
行。
此時,您應該能夠:
docker build -t argylehacker/app-stats:latest.
docker push argylehacker/app-stats:latest
argylehacker/app-stats:latest
的 AWS Lightsail 中部署它我被困住了,因為我在 Lightsail 日志終端中看不到任何有意義的日志。 這是因為我的容器實際上沒有運行任何東西。
為了在本地進行調試,我采取了以下步驟
docker build -t argylehacker/app-stats:latest.
docker run -it --rm -p 8000:8000 argylehacker/app-stats:latest
。此時 docker 應該正在運行容器,您可以查看日志。 這正是 Lightsail 在運行您的容器時要做的事情。
docker build <container>:<tag>
settings.py
文件以包含數據庫憑據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.