python-2.7 - 容器化的 celery worker 不会在 docker-compose up 上启动
问题描述
我对 docker 的了解非常有限,所以我来这里发布这个 celery worker 服务不会以以下错误开始:
错误:对于 api_worker_1 无法启动服务工作者:b'OCI 运行时创建失败:container_linux.go:348:启动容器进程导致“exec:\”worker\“:$PATH 中找不到可执行文件”:未知'
DockerFile
# web
FROM python:2.7
RUN apt-get update
RUN apt-get install -y swig
RUN apt-get install -y libssl1.0-dev
RUN pip install --upgrade pip
ADD . /app
WORKDIR /app
CMD ["python", "-u","app.py"]
码头工人-compose.yml
version: '2'
services:
db:
image: postgres
restart: always
volumes:
- ./postgres-data:/var/lib/postgresql/data
ports:
- "5432:5432"
web:
restart: always
build: .
volumes:
- ./web:/data/web
- .:/app
command: python -u app.py
ports:
- "5000:5000"
rabbit:
hostname: rabbit
image: rabbitmq:latest
environment:
- RABBITMQ_DEFAULT_USER=guest
- RABBITMQ_DEFAULT_PASS=guest
ports:
- "5672:5672"
worker:
restart: always
build: .
volumes:
- .:/app
command: celery worker -B -l info -A app.tasks.celery
links:
- db
- rabbit
- web
depends_on:
- web
查看工人服务:
worker:
restart: always
build: .
volumes:
- .:/app
command: celery worker -B -l info -A app.tasks.celery
我没有使用/安装来自 docker 的 celery。因为这是一个工人形象而不是芹菜形象。
这是使用烧瓶应用程序运行的,它最近正在运行。清理或删除图像和容器后。运行docker-compose build
并docker-compose up
产生
OCI 运行时创建失败:..
之后出错。
更新
我更新了问题的标题,因为 celery 标题在这里具有误导性。这是一个工人服务,没有DockerFile
它。这是一项启动 celery worker 的服务,它驻留在app/tasks/celery
.
解决方案
在您的 docker-compose 文件中,您为和指定了相同的构建上下文 ( build: .
) 。您在上面发布的内容用于构建图像和图像,并且显然没有安装在该图像中。web
worker
Dockerfile
web
worker
celery
推荐阅读
- sql - 从存储在 SQL 表中的 XML 字符串中提取多个值
- python - 始终在一个(集合)中导入 3 个不同的随机样本
- simulink - 在 Simulink 模型中启用混合采样时间的最佳做法是什么
- java - 如何阅读 YAML 配置部分
- php - 如何在 PHP 中回显来自 xml 的信息
- c# - 我可以避免将 TreeViewItem 的内容放在 WPF 窗口的左上角吗?
- css - 尝试使用隐藏属性为显示/隐藏定义列表设置动画(隐藏属性导致动画不起作用)
- javascript - 服务器端渲染不渲染 UI 库
- html - CSS如何使包装器元素包含2个它的大小元素,1个离屏
- hash - 哈希表中不同Key值插入序列的数量