Docker Compose:.env文件不存在 / NodeJS

4

你好,我正在尝试使我的 Docker Compose 正常工作,但是遇到了以下错误:

Step 13/15 : COPY .env . COPY failed: stat /var/lib/docker/tmp/docker-builder209795817/.env: no such file or directory

我无法找到解决方案或想象我可以做什么来解决这个问题

代码:

DockerCompose:

version: "3.7"
services:
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: postgres
      POSTGRES_USER: postgres
      POSTGRES_DB: emasa
    volumes:
      - ./pgdata:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    web:
      image: emasapg
      depends_on:
        - dbs
      ports:
        - "4000:4000"

DockerFile:
FROM node as builder
WORKDIR usr/app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build


FROM node
WORKDIR usr/app
COPY package*.json ./
RUN npm install --production

COPY --from=builder /usr/app/dist ./dist      // I GOT PROBLEM HERE

COPY ormconfig.docker.json ./ormconfig.json
COPY .env . 

expose 4000
CMD node dist/src/index.js

My package.json:

{
  "name": "back-end",
  "version": "0.0.1",
  "description": "Awesome project developed with TypeORM.",
  "scripts": {
    "dev:server": "ts-node-dev --respawn --transpileOnly src/index.ts",
    "build": "tsc -b"
  },
  "devDependencies": {
    "@types/express": "^4.17.3",
    "@types/node": "^13.9.1",
    "typescript": "^3.8.3"
  },
  "dependencies": {
    "apollo-server-express": "^2.11.0",
    "express": "^4.17.1",
    "graphql": "^14.6.0",
    "pg": "^7.3.0",
    "reflect-metadata": "^0.1.13",
    "ts-node": "^8.6.2",
    "typeorm": "0.2.24"
  }
}

我的 ormconfig:

{
  "type": "postgres",
  "host": "db",
  "port": 5432,
  "username": "postgres",
  "password": "postgres",
  "database": "emasa",
  "synchronize": true,
  "logging": false,
  "entities": ["src/entity/**/*.ts"],
  "migrations": ["src/migration/**/*.ts"],
  "subscribers": ["src/subscriber/**/*.ts"],
  "cli": {
    "entitiesDir": "src/entity",
    "migrationsDir": "src/migration",
    "subscribersDir": "src/subscriber"
  }
}

这是我的文件夹结构:

typ


我在你的项目结构中没有看到 .env 文件或者 .dist 文件夹。这些被你的 IDE 隐藏了吗? - pzaenger
如果我使用以下命令:yarn tsc src/index.ts即使它有我的tsconfig,也不会创建我的dist文件夹。 - user12356906
你好,这个已经起作用了,能否帮我看一下,因为我的JS文件没有被放到./dist文件夹里面? - user12356906
你尝试过运行 npm run build 吗? - pzaenger
工作正常,能够提供正确的答案吗? - user12356906
显示剩余2条评论
1个回答

4
错误出现是因为没有.env文件和dist文件夹。
首先,在项目结构的根目录下创建一个.env文件,以提供所需的环境变量(例如,数据库连接的名称、主机、端口、密码和用户)。接下来运行npm run build来构建你的项目,这将创建dist文件夹(请参见你的tsconfig.json文件)。

感谢@pzaenger,你能帮我解决这个问题吗?https://stackoverflow.com/questions/60731782/docker-compose-i-cant-create-postgress-server - user12356906

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接