我正在嘗試用 Docker 包裝我的節點快速后端。但是,在運行我的 docker-compose 檔案時。我npm install在整個 dockerfile 中運行stage時遇到錯誤,說它沒有找到在我的本地目錄中復制到我的容器內的目錄中的 package.json。下面是我的專案目錄結構。嘗試使用 nginx 代理我的節點快速后端 API。任何可以幫助我努力實作的資源都非常感謝。
錯誤日志:
> [4/5] RUN npm install:
#8 0.697 npm ERR! code ENOENT
#8 0.697 npm ERR! syscall open
#8 0.697 npm ERR! path /app/package.json
#8 0.698 npm ERR! errno -2
#8 0.699 npm ERR! enoent ENOENT: no such file or directory, open '/app/package.json'
專案目錄:
express-backend
├── docker
| ├── nginx
| | ├── nginx.conf
| | └── dockerfile
| └── dockerfile
├── src
| ├── model
| | └── model.ts
| ├── controller
| | └── controller.ts
| ├── middleware
| | └── middleware.ts
| └── server.ts
| .dockerignore
| .gitignore
| docker-compose.yml
| package-lock.json
| package.json
| tsconfig.json
碼頭工人/碼頭工人檔案:
FROM node:alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . ./
EXPOSE 5000
RUN npm run build
CMD ["node", "/app/build/server.js", "npm run start"]
泊塢窗/nginx/dockerfile
FROM nginx
COPY nginx.conf /etc/nginx/conf.d/default.conf
碼頭工人/nginx/nginx.conf
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name nodeserver;
location / {
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:5000;
}
}
docker-compose.yml
version: "3.8"
services:
express:
container_name: express_container
build:
context: ./docker
environment:
ports:
- "5000:5000"
nginx:
container_name: nginx_container
restart: always
build:
context: ./docker/nginx
ports:
- "80:80"
postgres:
container_name: postgres_container
image: postgres
restart: always
environment:
ports:
- "5432:5432"
pgadmin:
container_name: pgadmin_container
image: dpage/pgadmin4
restart: always
environment:
ports:
- "5050:80"
uj5u.com熱心網友回復:
你已經設定了背景關系:
context: ./docker
所以當你跑
COPY . ./
您正在從該背景關系中復制檔案,其中不包括package.json. 您可以指定 Dockerfile:
express:
container_name: express_container
build:
dockerfile: ./docker/Dockerfile
environment:
ports:
- "5000:5000"
但我建議重組檔案夾以在有意義的地方將每個影像分開。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/344449.html
標籤:码头工人 docker-compose 文件
