我是 docker 初学者,尝试为我的全栈 API REST 项目进行配置,我的 PNPM 工作区中有 2 个应用程序,一个前端和一个后端,前端是 Angular,后端是 AdonisJS,我想为以下内容进行 Docker 配置: Phpmyadmin、Mysql、Angular 和 Adonis,但我有这个问题:
这是我的项目结构:
应用程序/
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
感谢您的帮助:)
您似乎正在尝试在 AdonisJS 后端的 Docker 设置中使用 ts-node,但找不到该包。这可能是因为您的 Docker 映像中缺少 ts-node 包。以下是调整 Dockerfile 以包含 ts-node 的方法:
错误 [ERR_MODULE_NOT_FOUND]:找不到从 /app/apps/backend/ace.js 导入的包“ts-node”
运行 npm install -g ts-node
添加 RUN npm install -g ts-node 命令以在 Docker 映像中全局安装 ts-node。这应该可以解决您面临的 ERR_MODULE_NOT_FOUND 问题。