Dockerfile‘COPY’命令不复制文件

Dockerfile‘COPY’命令不复制文件

在尝试创建和运行新的 docker 容器时,我遇到了一个令人沮丧的问题。当我将代码上传到 Github 存储库,然后使用 Docker Hub 构建它时,构建完成且没有任何错误。但是,当我尝试在自己的服务器上创建并运行新容器时,我发现必要的文件和目录尚未复制到新容器中或与容器目录绑定的本地目录中(显然如此)。但奇怪的是,似乎init.sh我的 Dockerfile 末尾引用的脚本正在复制,因为它运行,但失败了,因为应该复制到的其他文件WORKDIR不存在。我尝试了不同的文件结构和COPY命令,但无济于事,目前所有要复制的文件和目录都在存储库的根目录中。这是我当前的 Dockerfile:

FROM node:latest

RUN mkdir -p /usr/src/app

WORKDIR /usr/src/app

COPY package*.json /usr/src/app/

RUN \
  npm install -g @adonisjs/cli && \
  npm install

COPY . /usr/src/app/

VOLUME /usr/src/app

RUN \
  cp /usr/src/app/init.sh /usr/local/bin/ && \
  chmod 755 /usr/local/bin/init.sh && \
  ln -s usr/local/bin/init.sh / # backwards compat

EXPOSE 8080
CMD ["/init.sh"]

我的 docker create 和 docker run 命令:

docker create --name='ferdi-server' -p '3333:80' -v '/mnt/cache/appdata/ferdi-server':'/usr/src/app' 'xthursdayx/ferdi-server-docker' 

docker run -d --name='ferdi-server' -p '3333:80' -v '/mnt/cache/appdata/ferdi-server':'/usr/src/app' 'xthursdayx/ferdi-server-docker'

有什么想法吗?我已经尝试解决这个问题两天了,但还是无果而终。

仅供参考,以下是我最近尝试过的文件结构和 COPY 命令

├── Dockerfile
├── init.sh
│   └── api
│       ├── package.json
│       ├── package-lock.json
│       ├── .env.example
│       ├── etc
│       ├── init.sh
│       └── app
│       |   └── directory
│       └── config
│           └── app.js
│           └── etc.js

使用命令 COPY api/ /usr/src/app/

├── Dockerfile
├── init.sh
├── package.json
├── package-lock.json
├── .env.example
├── etc
├── init.sh
│   └── app
│   └── directory2
│   └── config
│       └── app.js
│       └── etc.js

使用命令 COPY . /usr/src/app/

相关内容