Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
docker compose使用错误文件夹中的入口点_Docker_Docker Compose_Dockerfile - Fatal编程技术网

docker compose使用错误文件夹中的入口点

docker compose使用错误文件夹中的入口点,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我已经在这个问题上绞尽脑汁很久了 我会尽可能清楚地解释我现在的处境 我有两个不同的项目 第一个项目有这个docker compose.yml: 版本:“3.7” 服务: spaceflights后端数据库: 主机名:spaceflights数据库主机 图片:博士后 重新启动:始终 环境: POSTGRES_密码:jBmfXzQKEck8TQco POSTGRES_用户:太空飞行 POSTGRES_DB:太空飞行 spaceflights后端应用程序: 建造: 上下文:/应用程序 dockerfi

我已经在这个问题上绞尽脑汁很久了

我会尽可能清楚地解释我现在的处境

我有两个不同的项目

第一个项目有这个
docker compose.yml

版本:“3.7”
服务:
spaceflights后端数据库:
主机名:spaceflights数据库主机
图片:博士后
重新启动:始终
环境:
POSTGRES_密码:jBmfXzQKEck8TQco
POSTGRES_用户:太空飞行
POSTGRES_DB:太空飞行
spaceflights后端应用程序:
建造:
上下文:/应用程序
dockerfile:dockerfile
主机名:spaceflights应用程序主机
图片:spaceflights/后端应用程序
工作目录:/home/node/spaceflights应用程序
卷数:
-“./文件系统:/home/node/spaceflights应用程序”
端口:
- 3000:3000
取决于:
-太空飞行后端数据库
以下是Dockerfile内容:

FROM node:latest

ENV COMPOSE_RPOJECT_NAME=spaceflights-frontend

RUN apt-get update && apt-get install -y --no-install-recommends \
    nano \
    screen \
    htop \
    bash \
    dumb-init \
    postgresql

# Entrypoint
COPY . /docker-files/
RUN chmod +x /docker-files/docker-entrypoint.sh
ENTRYPOINT ["/usr/bin/dumb-init", "--", "/docker-files/docker-entrypoint.sh"]

CMD ["bash", "-c", "node src/app.mjs"]

这是docker入口点。sh:

#/bin/bash
设置-euo管道故障
echo“安装软件包”
纱线安装
echo“设置数据库数据”
节点初始化/setup.mjs
执行官“$@”
文件夹结构为:

这个项目很有魅力,没有抱怨,一切都是一流的

我有第二个项目:

docker compose.yml

版本:“3.7”
服务:
太空飞行前端干线:
容器名称:spaceflights前端主
图片:太空飞行/前端主
建造:
上下文:/应用程序
dockerfile:dockerfile
环境:
反应应用程序主持人:流浪码头工人
反应应用程序端口:8080
反应应用程序API主机:流浪码头工人
反应应用程序API端口:3000
主机名:spaceflights前端应用程序
工作目录:/home/node/spaceflights应用程序
卷数:
-“./文件系统:/home/node/spaceflights应用程序”
端口:
- 8080:8080
Dockerfile:

FROM node:latest

RUN apt-get update && apt-get install -y --no-install-recommends \
    nano \
    bash 

RUN yarn install
RUN yarn global add serve

CMD ["bash", "-c", "serve -l ${REACT_APP_PORT} -s build > /dev/null"]

这里没有
docker entrypoint.sh

文件夹结构为:

停止并删除每个容器后,这意味着
docker container ls
返回一个空列表
并尝试运行这个家伙,出于我无法理解的原因,它从第一个项目执行
docker entrypoint.sh

我尝试了多种方法:

  • 使用
    .env
    :它不会改变任何东西
  • 使用
    docker compose-p…
    定义项目名称没有帮助
  • 删除
    docker compose.yml
    中的所有
    容器名称
    。还是不行
  • 在每个项目中将
    docker
    文件夹重命名为两种不同的内容。没什么好的
  • 上述各项的各种组合
我使用相同的命令启动这两个项目:
docker compose up-d--build

我在这里真的很糊涂,我只是不明白为什么它这么混乱。这些项目甚至不在同一个文件夹中(显然考虑到目录结构),我在
docker
文件夹中运行
docker compose up-d--build

任何帮助都将不胜感激


在某个时候,
docker compose.yml
是否同时指定了
build:
image:node
?如果您
docker pull node:latest
从docker Hub获取当前版本,它会改进吗?感谢您的回答@DavidMaze,我实际上在这个周末找到了解决方案。结果表明,当您指定
image:
时,意味着您希望使用此名称构建图像,而不是使用此图像。我必须再次提取节点图像,然后重新编辑Dockerfile。我将发布我的解决方案的完整解释,这样可以帮助其他人。尽管如此,我认为你的回答会给我一个解决办法。