2

我正在尝试使用 docker 文件构建烧瓶应用程序的 docker 映像。烧瓶应用程序使用特定 sql 版本 datajoint/mysql 的 docker 映像(使用 docker-compose)。但我收到以下错误:

/bin/sh: 1: docker: not found
The command '/bin/sh -c docker run -v /var/run/docker.sock:/var/run/docker.sock ...' returned a non-zero code: 127

我还将 docker 和 docker-compose 复制到了我的 app/ 目录。请您帮我如何安装 docker 映像并从 docker 文件中调用 docker。我已经浏览了以下链接,但它并没有直接解决我的问题

Dockerfile

# this is an official Python runtime, used as the parent image
FROM python:3.6.5-slim

# set the working directory in the container to /app
WORKDIR /app



# add the current directory to the container as /app
ADD . /app
# execute everyone's favorite pip command, pip install -r
RUN docker run -v /var/run/docker.sock:/var/run/docker.sock ...
RUN ./docker-compose up -d
RUN ./docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=simple datajoint/mysql

# add the current directory to the container as /app
ADD . /app


# execute everyone's favorite pip command, pip install -r
RUN pip install --trusted-host pypi.python.org -r requirements.txt
ADD /datajoint-python /datajoint-python
RUN pip install -e ../datajoint-python/
# unblock port 80 for the Flask app to run on
EXPOSE 1234

# execute the Flask app
CMD ["python", "run.py"]

下面是 amy 应用程序目录的样子

在此处输入图像描述

任何帮助是极大的赞赏。

4

1 回答 1

1

@DavidMaze 是正确的,因为这docker-compose很可能是在您的主机上并排运行多个 docker 容器的最干净的方式。一旦你习惯了它的声明,它实际上是记录本地/原型设置的好方法。

在此处查看为图像docker-compose提供的参考。特别是在您共享的设置中,如果您datajoint/mysql与您的 dockerize位于同一目录中,则可以像这样简单地实现它:datajoint-pythonDockerfiledocker-compose.yml

version: '2.4'
services:
  db:
    image: datajoint/mysql:5.7
    environment:
    - MYSQL_ROOT_PASSWORD=simple
    networks:
    - main
    #ports:
    #  - "3306:3306"
    #volumes:
    #  - ./data:/var/lib/mysql
  dj:
    build: .
    depends_on:
      db:
        condition: service_healthy
    environment:
    - DJ_HOST=db
    - DJ_USER=root
    - DJ_PASS=simple
    networks:
    - main
networks:
  main:

注意:我有意使用2.X docker-compose版本的唯一原因是3.X版本适用于不需要像这些细粒度检查的 Docker Swarm 部署。

于 2020-10-15T21:53:47.770 回答