docker-compose up 无法启动容器,但是手动创建镜像,在启动容器就是正常的

田伟
  • 11

问题描述

使用docker-compose up 部署两个容器,但使用Dockerfile构建的,镜像可以构建成功,但是容器无法启动! 但是先docker build,然后docker run就没有问题。

  • Dockerfile文件内容
FROM python:3.9.2-buster
WORKDIR /usr/src/flask_app
ADD . /usr/src/flask_app
RUN pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
EXPOSE 1195
VOLUME /usr/src/flask_app
CMD ["python", "manage.py", "runserver","--host=0.0.0.0 --port=1195"]
  • docker-compose.yml文件内容
version: "3.2"
services:
  mongo:
    image: mongo:4.4.4
    container_name: mongo
    ports:
      - "27017:27017"
 networks:
      - fckm
  flask_app:
    build: .
    container_name: flask_app
    ports:
      - "1195:1195"
 volumes:
      - /home/tiven/data:/usr/src/flask_app
    networks:
      - fckm
    depends_on:
      - mongo
networks:
  fckm:
  • 报错信息,说找不到文件

但是docker exec进入容器,这个文件明明就摆在那儿!

image.png

image.png

手动先执行docker build构建镜像,然后再使用docker run就可以启动容器

那个大佬给看看呢?,这两者之间是有什么区别吗?

回复
阅读 1.7k
1 个回答
  1. 先回答为什么你docker run可以直接启动起来,你的dockerfile中启动时用manage.py启动的然后直接run的时候用/bin/bash覆盖了CMD启动指令所以你的容器进去了,但并不是的python启动起来了。
  2. 为什么docker-compose为什么没启动 应该时
- /home/tiven/data:/usr/src/flask_app

/home/tiven/data 这个目录下并没有的你脚本把 你挂载后直接把容器里的目录覆盖了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏