【发布时间】:2022-08-18 20:18:38
【问题描述】:
我有一个使用docker-compose 运行的遗留项目。一年前,它是从下面的配置开始的。
现在它抛出一个错误:
exec /usr/local/bin/docker-entrypoint.sh: exec format error
我想使用 CMD 配置运行容器。我在网上发现需要添加#!/bin/bash 来避免这个错误,我将它添加到Dockerfile 中。
没有定义自定义docker-entrypoint.sh。据我了解文档需要有一个入口点或一个命令。
CMD 的主要目的是为执行提供默认值 容器。这些默认值可以包括可执行文件,也可以省略 可执行文件,在这种情况下,您必须指定一个 ENTRYPOINT 指令也是如此。
Dockerfile
#!/bin/bash #nodejs FROM node:11.15 ENV NODE_VERSION 11.15 #app directory WORKDIR ./ #mongodb tools RUN wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | apt-key add - RUN echo \"deb http://repo.mongodb.org/apt/debian buster/mongodb-org/5.0 main\" | tee /etc/apt/sources.list.d/mongodb-org-5.0.list RUN apt-get update RUN apt-get install -y mongodb RUN apt-get install nano #nodejs packages # A wildcard is used to ensure both package.json AND package-lock.json are copied # where available (npm@5+) COPY package*.json ./ RUN npm install --ignore-scripts sharp RUN npm install --only=production COPY . . RUN mkdir -p /logs/ # wait for mongoDB launch ADD https://github.com/ufoscout/docker-compose-wait/releases/download/2.5.1/wait /wait RUN chmod +x /wait #port of the app EXPOSE 8080 CMD /wait && npm run dockerServer码头工人撰写
version: \"3\" services: watchtower: container_name: watchtower image: v2tec/watchtower env_file: - watchtower.env volumes: - /var/run/docker.sock:/var/run/docker.sock - /root/.docker/config.json:/config.json command: --interval 30 restart: always mongo: container_name: mongo ports: - \'27017:27017\' volumes: - \'/temp/im/docker/mongo/data:/data/db\' - \'/temp/im/docker/backup:/data/backup\' image: mongo restart: always core: container_name: core ports: - \'8080:8080\' env_file: - core.env depends_on: - \"mongo\" volumes: - \'/temp/im/docker/logs:/data/logs\' - \'/temp/im/docker/backup:/data/backup\' image: index.docker.io/regname/core:beta logging: driver: \"json-file\" options: max-file: \'5\' max-size: \'10m\' restart: always编辑:我更改了标题以使其更好地被发现。
-
你的主机是什么 CPU 架构;你在 M1 Mac 上吗?看起来您正在从 GitHub 存储库下载和安装 Rust 二进制文件,它是否有任何您缺少的共享库依赖项?你能
docker-compose run core sh在一个新容器中获得一个调试外壳并四处寻找(如果你不能这样做,它会提供信息)? -
(我建议在这里使用 CMD 而不是 ENTRYPOINT 更可取,部分原因是它使
docker-compose run行直截了当。\"shebang\" 行在这里不会有所作为,而且是不正确的;它只会做如果您尝试直接将./Dockerfile作为命令运行,并且 Dockerfile 不是 shell 脚本。)
标签: docker docker-compose