我正在尝试使用docker文件构建flask应用程序的docker映像。 flask应用程序使用特定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。我经历了以下link,但不能直接解决我的问题
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"]
以下是艾米应用程序目录的外观
任何帮助将不胜感激。
答案 0 :(得分:0)
@DavidMaze是正确的,因为docker-compose
最有可能是在主机上并行运行多个Docker容器的最干净的方法。一旦习惯了它的声明,它实际上就是记录本地/原型设置的好方法。
看看here为docker-compose
图像提供的参考datajoint/mysql
。特别是在您要共享datajoint-python
的地方共享设置中,如果您的Dockerfile
与docker-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部署。