【问题标题】:Is there a better way to copy files and folders to a docker container?有没有更好的方法将文件和文件夹复制到 docker 容器?
【发布时间】:2022-01-11 15:05:37
【问题描述】:

这是我想出的,但对我来说似乎很笨拙。有没有办法简化 COPY 命令?请注意,并非所有文件夹都需要复制。

我确实检查了Docker's documentation,似乎这可能是唯一的方法?我只是在检查是否有其他人有更好的想法。谢谢!

# Copy files to container
COPY src/ /opt/build_area/src/
COPY public/  /opt/build_area/public/
COPY app.js doc* .en* tag-push.sh react-0.3.1.tgz package.json .npmrc /opt/build_area/

这是文件夹结构:

$ tree -L 1
.
├── .dockerignore
├── .env
├── .env.development
├── .git/
├── .gitignore
├── .npmrc
├── Dockerfile
├── Dockerfile-build
├── README.md
├── app.js
├── azure-pipelines-static.yml
├── azure-pipelines.yml
├── docker/
├── docker-compose-run.yml
├── docker-compose.yml
├── node_modules/
├── package-lock.json
├── package.json
├── public/
├── react-0.3.1.tgz
├── src/
├── tag-push.sh
└── test-azure-pipelines-static.yml

5 directories, 18 files

【问题讨论】:

标签: docker dockerfile


【解决方案1】:

这是我从@TahaNaqvi 和@DavidMaze 提出的有用的cmets。这更容易阅读。

# Copy files to container
WORKDIR /opt/build_area/

COPY src/ ./src/
COPY public/  ./public/

COPY app.js           \
     .npmrc           \
     doc* .en*        \
     tag-push.sh      \
     package.json     \
     react-0.3.1.tgz  /opt/build_area/

【讨论】:

    【解决方案2】:

    dockerignore 文件可以像 gitignore 文件一样使用。您可以指定要忽略的文件夹,COPY 命令不会复制这些文件夹。更多文档在这里 - https://docs.docker.com/engine/reference/builder/#dockerignore-file

    【讨论】:

    • 注意。吹。然后我可以做一个COPY * <dest dir>。我会把它放在口袋里以备后用!
    猜你喜欢
    • 1970-01-01
    • 2022-01-10
    • 2019-07-14
    • 2021-06-27
    • 1970-01-01
    • 2018-04-01
    • 1970-01-01
    • 2012-08-09
    • 2012-04-17
    相关资源
    最近更新 更多