簡體   English   中英

在部署在 Elastic Beanstalk 上的 Dockerfile 上運行遷移

[英]Run migrations on Dockerfile deploying on Elastic Beanstalk

我在 Elastic beanstalk 上進行遷移(Django App 4.0.6)時遇到問題。

這是我的 Dockerfile:

FROM python:3.8

ENV PROJECT_DIR=/usr/src/app/
 
ENV PYTHONIOENCODING=utf-8
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
ENV PIPENV_USE_SYSTEM=1

WORKDIR ${PROJECT_DIR}

COPY .  ./

RUN pip install -r requirements.txt

EXPOSE 8000
    
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

到這里為止,一切正常,但是如果我嘗試在EXPOSE 8000之前添加RUN python manage.py migrate並進行部署,則會出現 504 錯誤。

我嘗試像這樣添加.ebextensions 和配置文件:

container_commands:
  01_migrate:
    command: "source /var/app/venv/*/bin/activate && python3 manage.py migrate"
    leader_only: true

但是我不確定如何在 Docker 中激活我的環境,當我嘗試進行部署時出現錯誤

2022-08-01 03:10:23,328 P28507 [INFO] Command 01_migrate
2022-08-01 03:10:23,331 P28507 [INFO] -----------------------Command Output-----------------------
2022-08-01 03:10:23,331 P28507 [INFO]   /bin/sh: /var/app/venv/*/bin/activate: No such file or directory
2022-08-01 03:10:23,331 P28507 [INFO] ------------------------------------------------------------
2022-08-01 03:10:23,331 P28507 [ERROR] Exited with error code 1

¿ 對於我的情況,最好的解決方案是什么?

謝謝你的幫助: :)

如果您沒有使用 docker compose 進行部署,那么您可以添加一個入口點文件並在那里運行您的遷移和服務器命令。

# Dockerfile

...

RUN pip install -r requirements.txt

EXPOSE 8000
    
ENTRYPOINT ["bin/production-entrypoint.sh"]

您的bin/production-entrypoint.sh文件如下所示:

#!/bin/bash

source /var/app/venv/*/bin/activate
python3 manage.py migrate
python manage.py runserver 0.0.0.0:8000

或者,如果您使用 docker compose 進行部署,則可以運行docker-compose.yml文件中的命令:

# Dockerfile

...

RUN pip install -r requirements.txt

EXPOSE 8000
# docker-compose.yml

version: "3"

services:
  web:
    build: .
    ports:
      - "8000:8000"
    env_file:
      - .env
    volumes:
      - /var/app/current:/usr/src/app
    command: >
      bash -c "source /var/app/venv/*/bin/activate
      && python3 manage.py migrate
      && python manage.py runserver 0.0.0.0:8000

...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM