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

Docker容器构建失败: /bin/sh:1:烧瓶:未找到

弘思聪
2023-03-14

要在没有docker的情况下运行应用程序,我首先运行"exportFLASK_APP=app",然后运行"flask run",因此我将其转移到Dockerfile。

这是运行docker-compose-fdocker-compose.yml--build后的错误消息

无法启动服务应用程序:b'OCI运行时创建失败:container_linux。go:348:启动容器进程导致“exec:\“flask\”:在$PATH中找不到可执行文件:未知

通过键入docker compose-f docker compose检查日志。yml logs-f,我看到这个错误,容器退出时代码为127:

/bin/sh: 1:烧瓶:未找到

文件夹结构

tree
  - app
    - __init__.py
  - Dockerfile
  - docker-compose.yml

docker-compose.yml

version: '2' 

services:
  app:
    restart: always
    build: 
      context: .
      dockerfile: Dockerfile
    ports:
      - "5000:5000"
    volumes:
      - .:/app
    depends_on:
      - redis

  redis:
    image: redis
    command: redis-server
    ports:
      - '6379:6379'

文档文件

# Pull base image.
FROM ubuntu

# Install Supervisor.
RUN \
  mkdir /var/log/celery && \
  mkdir /home/ubuntu && \
  apt-get update && \
  apt-get install -y supervisor python-pip wget vim git && \
  rm -rf /var/lib/apt/lists/* && \
  sed -i 's/^\(\[supervisord\]\)$/\1\nnodaemon=true/' /etc/supervisor/supervisord.conf

# needs to be set else Celery gives an error (because docker runs commands inside container as root)
ENV C_FORCE_ROOT=1

# expose port 80 of the container (HTTP port, change to 443 for HTTPS)
EXPOSE 80

# Create virtualenv.
RUN \
  pip2 install --upgrade pip && \
  pip install --upgrade virtualenv && \
  virtualenv -p /usr/bin/python2.7 /home/ubuntu/.virtualenvs

WORKDIR /home/ubuntu/celery-scheduler

ADD requirements.txt /home/ubuntu/tree/

# Install app requirements
RUN \
  . /home/ubuntu/.virtualenvs/bin/activate && \
  pip install -r requirements.txt

COPY . /home/ubuntu/tree

# Copy supervisor configs
RUN \
  cp configs/supervisord.conf /etc/supervisor/supervisord.conf && \
  cp configs/conf.d/*.conf /etc/supervisor/conf.d/

ENV FLASK_APP /home/ubuntu/tree/app/
ENV FLASK_DEBUG 1

CMD ["flask", "run", "--host", "0.0.0.0", "--port", "5000"]

app/____;init__;。py公司

from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
import os

db = SQLAlchemy()

def create_app():
    app = Flask(__name__)
    app.config.from_object('config')
    db.init_app(app)

    with app.app_context():
        db.create_all()
    return app

from app import models
app = create_app()
migrate = Migrate(app, db)

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080, debug=True)

共有1个答案

东郭骁
2023-03-14

这一行:

RUN \
  . /home/ubuntu/.virtualenvs/bin/activate && \
  pip install -r requirements.txt

只会为该特定命令激活您的虚拟环境

由于virtualenv激活实际上只能归结为路径操作,因此可以通过ENV

这应该工作:

ENV PATH=/home/ubuntu/.virtualenvs/bin:$PATH
RUN pip install -r requirements.txt
 类似资料:
  • 问题内容: 我正在使用以下命令构建新的Docker映像: 但是,它失败并显示以下错误: 这似乎在我的本地计算机(Mac OSX)上运行良好,但是当我尝试在Linux CentOS 7计算机上构建它时,它失败了。 问题答案: 最后,我们升级了项目以使用此Docker Maven插件:https : //github.com/fabric8io/fabric8-maven- plugin 。到目前为止

  • 这是我的Dockerfile的内容。 当我运行Dockerfile来构建docker映像时,我得到以下错误: /bin/sh:1:sudo:未找到 你能帮我解决上面的错误吗?

  • 几个小时前,我刚刚开始学习docker,我试图塑造自己的docker形象。当我试图制作Dockerfile和docker图像时,我收到了以下错误消息“/bin/sh:1:source:not found”。 首先,我在中管理环境变量。环境文件。每当我更改env文件时,我都会运行这个命令$source。env和go构建。然后运行main。去所以,我试着设置Dockerfile,运行source。但是

  • 我有一个Jenkins作为docker容器运行,现在我想使用管道构建docker映像,但Jenkins容器总是告诉docker not found。 以下是我如何运行我的詹金斯形象: Jenkins图像的DockerFile是:https://github.com/jenkinsci/docker/blob/9f29488b77c2005bbbc5c936d47e697689f8ef6e/Dock

  • 问题内容: 我将下面的语言环境设置代码放入了我的dockerfile中, 但这给了我错误 任何的想法? 问题答案: 谢谢您的评论,edwinksl。我更新了下面的dockerfile,解决了locale-gen错误:

  • 我试图设置NGINX,uWSGI和烧瓶。我目前正在得到, uWSGI错误 找不到Python应用程序 我得到了一些奇怪的错误在我的uwsgi错误文件,你可以在我的文章底部找到。 我会直截了当地说,这是在运行Ubuntu 13.04 64位的新VPS上,这些是我运行的命令。 sudo apt-get更新 sudo apt-get安装构建基本 sudo apt-get安装python-dev sudo