尽管在项目根和包中放置了2个.dockerignore,但停靠者在myapp中编写副本node_modules。
.dockerignore
*node_modules*项目目录如下:
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.jsdocker-compose.yml
version: '3'
services:
client:
image: myapp
build:
context: '.'
dockerfile: 'packages/myapp/Dockerfile'
ports:
- "3000:3000"Dockerfile
FROM alpine
WORKDIR /usr/app
COPY . .
RUN apk add --update nodejs npm
RUN npm install
CMD ["npm", "start"]无论我做什么,node_modules都会被复制:
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产生项目:
mkdir myproject
cd myproject
mkdir packages
cd packages
npx create-react-app myapp并复制包括的停靠文件
发布于 2022-10-06 20:56:45
所使用的.dockerignore文件位于上下文的根目录中,在本例中,与docker-compose.yml文件的目录相同。但是,由于忽略该文件,内容无效。若要忽略任何子目录中的node_modules文件夹,语法应为:
**/node_modules但是,这将导致复制命令将packages目录拉到顶部。所以你更有可能想要改变你的环境:
version: '3'
services:
client:
image: myapp
build:
context: 'packages/myapp'
ports:
- "3000:3000"然后,.dockerignore文件夹中的myapp只需要:
node_moduleshttps://stackoverflow.com/questions/73979787
复制相似问题