当前位置: 首页 > 知识库问答 >
问题:

如何在Docker中运行flask_migrate

扈高逸
2023-03-14
proj
  src
    application
      app.py
      manage.py
      migrations
  Dockerfile
  docker-compose.yaml
python manage.py db upgrade
FROM python:3.7-alpine

ADD requirements.txt /code/
WORKDIR /code

RUN apk add --no-cache postgresql-dev gcc python3 musl-dev && \
    pip3 install -r requirements.txt


ADD . /code

EXPOSE 5000
WORKDIR /code/src/application

CMD ["flask", "run", "--host=0.0.0.0"]

Docker-compose.yaml

---
version: "3"
services:
  web:
    links:
      - "db"
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
    depends_on:
      - db
    env_file:
      - .env

  db:
    image: postgres:10
    restart: always
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_DB=app
    ports:
      - "5432:5432"
    expose:
      - 5432

我怎么能那么做?

共有1个答案

鞠自明
2023-03-14

我会添加一个bash脚本,其中包含在启动期间要运行的命令,并将其用作映像中的默认入口点。通常最佳做法是调用此脚本entrypoint.sh

#!/usr/bin/env bash
python manage.py db upgrade
flask run --host=0.0.0.0

然后,在您的Dockerfile中,将最后一行替换为以下内容

RUN chmod u+x ./entrypoint.sh
ENTRYPOINT ["./entrypoint.sh"]

如果您只想在Docker compose中运行upgrade命令,那么您可以在compose文件中重写它,而不是更改图像中的默认入口点,如下所示

  web:
    links:
      - "db"
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
    depends_on:
      - db
    entrypoint: /code/entrypoint.sh
    env_file:
      - .env
 类似资料:
  • 问题内容: 我在Docker中安装pipenv: 我收到错误: 如果我跑步 相反,即时通讯收到另一个错误: 但是当我改为执行以下操作时: 这是工作… 于是两个问题:第一:为什么给我这个错误,第二:为什么我必须做之前得到它的工作? 我想使用pipenv创建具有不同python版本和不同依赖版本的虚拟环境。 问题答案: 考虑到您的问题,据我所知,最简单的方法是更新到的最新版本。它仍在开发中,因此很快就

  • 是否可以在lambda中运行docker? 错误:响应:{“errorType”:“Runtime.ExitError”,“errorMessage”:“RequestId:d7a7dc46-b4e2-439b-a16b-e4ee1de1f7c5错误:运行时已退出,但出现错误:退出状态127”} 请求ID:“d7a7dc46-b4e2-439b-a16b-e4ee1de1f7c5” 函数日志: S

  • 如果我直接在docker中运行google-chrome,它会显示如下: 系统:

  • 问题内容: 我正在研究Centos7。我有一个运行Jenkins的Docker容器。在那个Jenkins容器中,我必须构建并运行其他Docker容器。但是詹金斯不认识码头工人。我能够执行一个shell并将docker安装在容器中。但是,是否有可能让容器在主机上使用我的docker- engine?如何使用? 在Jenkins-(docker)-容器中安装Docker的最佳选择是什么? 问题答案:

  • 问题内容: 我正在尝试在Ubuntu容器中下载Debian软件包,如下所示: 我懂了 我已经安装了docker,如下所示: 如何下载文件? 问题答案: 您需要先安装它。创建一个新的,并在其中安装wget: 然后,构建该图像: 最后,运行它:

  • 问题内容: 我启动了Docker,现在正在学习本教程,但是我知道我无法在OS X上运行该命令。 文档指出您运行以下命令来创建本地虚拟机: 但是,此命令在OS X(11.6)中不起作用,出现以下错误: 我试图安装virtualbox。但是,另一页明确指出您不得将其安装在本地计算机上: 不得安装版本4.3.30之前的VirtualBox(与Mac的Docker不兼容) 注意:如果您的系统不满足这些要求