PNPM mono 存储库的 Docker 配置出现错误

问题描述 投票:0回答:1

我是 docker 初学者,尝试为我的全栈 API REST 项目进行配置,我的 PNPM 工作区中有 2 个应用程序,一个前端和一个后端,前端是 Angular,后端是 AdonisJS,我想为以下内容进行 Docker 配置: Phpmyadmin、Mysql、Angular 和 Adonis,但我有这个问题:

这是我的项目结构:

应用程序/

  • 后端
    • DOCKERFILE
  • 前端
  • docker-compose
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'ts-node' imported from /app/apps/backend/ace.js

这是我的 docker-compose :

version: '3.8'
services:
  mysql:
    image: mysql:latest
    volumes:
      - mysql_data:/var/lib/mysql
    ports:
      - '3306:3306'
    networks:
      - default
    environment:
      # MySQL
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: database
      MYSQL_USER: user
      MYSQL_PASSWORD: password
  phpmyadmin:
    container_name: phpmyadmin
    image: phpmyadmin/phpmyadmin:latest
    restart: always
    networks:
      - default
    environment:
      PMA_HOST: mysql
      MYSQL_ROOT_PASSWORD: root
    ports:
      - "8080:80"
    depends_on:
      - mysql
  adonisjs:
    build: ./apps/backend
    working_dir: /app
    volumes:
      - .:/app
    ports:
      - "3333:3333"
    depends_on:
      - mysql
    environment:
      - APP_KEY=xxxxx
      - DB_CONNECTION=mysql
      - DB_HOST=mysql
      - DB_PORT=3306
      - DB_USER=user
      - DB_PASSWORD=password
      - DB_DATABASE=database
networks:
  default:
    driver: bridge
volumes:
  mysql_data:

这是我的 Dockerfile :

FROM node:20-slim AS base
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable

FROM base AS build
COPY . /usr/src/app
WORKDIR /usr/src/app
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install

COPY wait-for-it.sh /usr/wait-for-it.sh
RUN chmod +x /usr/wait-for-it.sh
RUN pnpm add ts-node -D
CMD /usr/wait-for-it.sh mysql:3306 -- pnpm dev:all

EXPOSE 3333

感谢您的帮助:)

angular typescript docker adonis.js
1个回答
0
投票

您似乎正在尝试在 AdonisJS 后端的 Docker 设置中使用 ts-node,但找不到该包。这可能是因为您的 Docker 映像中缺少 ts-node 包。以下是调整 Dockerfile 以包含 ts-node 的方法:

错误 [ERR_MODULE_NOT_FOUND]:找不到从 /app/apps/backend/ace.js 导入的包“ts-node”

全局安装 ts-node

运行 npm install -g ts-node

添加 RUN npm install -g ts-node 命令以在 Docker 映像中全局安装 ts-node。这应该可以解决您面临的 ERR_MODULE_NOT_FOUND 问题。

© www.soinside.com 2019 - 2024. All rights reserved.