首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >忽略`.dockerignore`的码头组合

忽略`.dockerignore`的码头组合
EN

Stack Overflow用户
提问于 2022-10-06 20:39:46
回答 1查看 75关注 0票数 0

尽管在项目根和包中放置了2个.dockerignore,但停靠者在myapp中编写副本node_modules

.dockerignore

代码语言:javascript
复制
*node_modules*

项目目录如下:

代码语言:javascript
复制
myproject
├── .dockerignore
├── docker-compose.yml
└── packages
    └── myapp
        ├── node_modules
        ├── .dockerignore
        ├── .gitignore
        ├── Dockerfile
        ├── README.md
        ├── package-lock.json
        ├── package.json
        ├── public
        │   ├── favicon.ico
        │   ├── index.html
        │   ├── logo192.png
        │   ├── logo512.png
        │   ├── manifest.json
        │   └── robots.txt
        └── src
            ├── App.css
            ├── App.js
            ├── App.test.js
            ├── index.css
            ├── index.js
            ├── logo.svg
            ├── reportWebVitals.js
            └── setupTests.js

docker-compose.yml

代码语言:javascript
复制
version: '3'

services:
  client:
    image: myapp
    build:
      context: '.'
      dockerfile: 'packages/myapp/Dockerfile'
    ports:
      - "3000:3000"

Dockerfile

代码语言:javascript
复制
FROM alpine
WORKDIR /usr/app
COPY . .
RUN apk add --update nodejs npm
RUN npm install
CMD ["npm", "start"]

无论我做什么,node_modules都会被复制:

代码语言:javascript
复制
myproject % docker-compose build
[+] Building 10.9s (5/9)                                                        
 => [internal] load build definition from Dockerfile                       0.0s
 => => transferring dockerfile: 31B                                        0.0s
 => [internal] load .dockerignore                                          0.0s
 => => transferring context: 55B                                           0.0s
 => [internal] load metadata for docker.io/library/alpine:latest           0.0s
 => [1/5] FROM docker.io/library/alpine                                    0.0s
 => CANCELED [internal] load build context                                10.7s
 => => transferring context: 53.88MB                                      10.7s
canceled

产生项目:

代码语言:javascript
复制
mkdir myproject
cd myproject
mkdir packages
cd packages
npx create-react-app myapp

并复制包括的停靠文件

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-06 20:56:45

所使用的.dockerignore文件位于上下文的根目录中,在本例中,与docker-compose.yml文件的目录相同。但是,由于忽略该文件,内容无效。若要忽略任何子目录中的node_modules文件夹,语法应为:

代码语言:javascript
复制
**/node_modules

但是,这将导致复制命令将packages目录拉到顶部。所以你更有可能想要改变你的环境:

代码语言:javascript
复制
version: '3'

services:
  client:
    image: myapp
    build:
      context: 'packages/myapp'
    ports:
      - "3000:3000"

然后,.dockerignore文件夹中的myapp只需要:

代码语言:javascript
复制
node_modules
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73979787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档