最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - npm install takes forever when running docker-compose - Stack Overflow

programmeradmin1浏览0评论

I am working on a Next.js project with a PostgreSQL database running in a Docker container. My project's setup uses Docker Compose. However, when I run docker-pose up, it takes forever to execute the npm install mand. Running npm install locally on my development machine finishes in less than a minute.

In the attached log, you can see that when I run npm i with the log level set to verbose, it appears to hang with no progress after a certain point.

[+] Building 3624.4s (7/8)
 => => transferring context: 34B                                                                                                                                                                                             0.0s
 => [internal] load metadata for docker.io/library/node:latest                                                                                                                                                               1.5s 
 => [internal] load build context                                                                                                                                                                                            0.1s 
 => => transferring context: 906.47kB                                                                                                                                                                                        0.1s
 => [1/4] FROM docker.io/library/node@sha256:xxx                                                                                                                0.0s 
 => CACHED [2/4] WORKDIR /app                                                                                                                                                                                                0.0s
 => [3/4] COPY . .                                                                                                                                                                                                           0.3s 
 => [4/4] RUN npm install --loglevel verbose                                                                                                                                                                              2065.1s 
 => => # npm http fetch GET 200 /@types/eslint/-/eslint-8.4.10.tgz 137294ms attempt #3 (cache miss)
 => => # npm http fetch GET 200 /@types/babel__generator/-/babel__generator-7.6.6.tgz 137326ms attempt #3 (cache miss)                                                                                  
 => => # npm http fetch GET 200 /@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz 137403ms attempt #3 (cache miss)
 => => # npm http fetch GET 200 /@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz 137436ms attempt #3 (cache miss)
 => => # npm http fetch GET 200 /@types/node/-/node-20.4.1.tgz 137633ms attempt #3 (cache miss)                                                                                                         
 => => # npm http fetch GET 200 /@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz 137706ms attempt #3 (cache miss)                                                                   

This is my docker-pose setup:

FROM node

WORKDIR /app

COPY . .
RUN npm install --loglevel verbose

ENV PORT=5000
EXPOSE 5000

ENTRYPOINT ["npm", "start"]

If the information is unclear please let me know.

I am working on a Next.js project with a PostgreSQL database running in a Docker container. My project's setup uses Docker Compose. However, when I run docker-pose up, it takes forever to execute the npm install mand. Running npm install locally on my development machine finishes in less than a minute.

In the attached log, you can see that when I run npm i with the log level set to verbose, it appears to hang with no progress after a certain point.

[+] Building 3624.4s (7/8)
 => => transferring context: 34B                                                                                                                                                                                             0.0s
 => [internal] load metadata for docker.io/library/node:latest                                                                                                                                                               1.5s 
 => [internal] load build context                                                                                                                                                                                            0.1s 
 => => transferring context: 906.47kB                                                                                                                                                                                        0.1s
 => [1/4] FROM docker.io/library/node@sha256:xxx                                                                                                                0.0s 
 => CACHED [2/4] WORKDIR /app                                                                                                                                                                                                0.0s
 => [3/4] COPY . .                                                                                                                                                                                                           0.3s 
 => [4/4] RUN npm install --loglevel verbose                                                                                                                                                                              2065.1s 
 => => # npm http fetch GET 200 https://registry.npmjs/@types/eslint/-/eslint-8.4.10.tgz 137294ms attempt #3 (cache miss)
 => => # npm http fetch GET 200 https://registry.npmjs/@types/babel__generator/-/babel__generator-7.6.6.tgz 137326ms attempt #3 (cache miss)                                                                                  
 => => # npm http fetch GET 200 https://registry.npmjs/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz 137403ms attempt #3 (cache miss)
 => => # npm http fetch GET 200 https://registry.npmjs/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz 137436ms attempt #3 (cache miss)
 => => # npm http fetch GET 200 https://registry.npmjs/@types/node/-/node-20.4.1.tgz 137633ms attempt #3 (cache miss)                                                                                                         
 => => # npm http fetch GET 200 https://registry.npmjs/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz 137706ms attempt #3 (cache miss)                                                                   

This is my docker-pose setup:

FROM node

WORKDIR /app

COPY . .
RUN npm install --loglevel verbose

ENV PORT=5000
EXPOSE 5000

ENTRYPOINT ["npm", "start"]

If the information is unclear please let me know.

Share Improve this question edited Oct 24, 2023 at 18:34 Specht asked Oct 24, 2023 at 18:14 SpechtSpecht 1423 silver badges13 bronze badges 0
Add a ment  | 

3 Answers 3

Reset to default 3

Just copy package-lock.json to the container too.

COPY package.json package-lock.json ./

This line fixed my issue. Nothing else worked (reinstalled VMs countless times, DNS, IPv6).

It's because you aren't taking advantage of Docker caching. Try adding the below to your Dockerfile as detailed here.

COPY package.json /app
RUN npm install

I changed my Dockerfile as suggested by @KyleBachan to this:

FROM node

WORKDIR /app

EXPOSE 5000

CMD ["npm", "start"]

COPY package.json /app
RUN npm install

COPY . /app
发布评论

评论列表(0)

  1. 暂无评论