diff --git a/Dockerfile b/Dockerfile index 772b078..ac314d8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,17 +1,22 @@ # 使用官方 Node.js 镜像 -FROM node:18-alpine +FROM node:lts-alpine # 设置工作目录 WORKDIR /app -# 安装 pnpm -RUN npm install -g pnpm +# 设置构建参数 +ARG NPM_REGISTRY=https://registry.npmmirror.com -# 复制 package.json 和 pnpm-lock.yaml -COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ +# 设置 npm 和 pnpm 镜像源 +RUN npm config set registry ${NPM_REGISTRY} && \ + npm install -g pnpm && \ + pnpm config set registry ${NPM_REGISTRY} + +# 复制 package.json +COPY package.json pnpm-workspace.yaml ./ # 安装依赖 -RUN pnpm install --frozen-lockfile +RUN pnpm install # 复制源代码 COPY . . diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml new file mode 100644 index 0000000..fc398a6 --- /dev/null +++ b/docker-compose.dev.yml @@ -0,0 +1,39 @@ +version: '3.8' + +services: + app: + build: . + ports: + - "3000:3000" + environment: + - NODE_ENV=development + - DB_HOST=mysql + - DB_PORT=3306 + - DB_USERNAME=pixel_game + - DB_PASSWORD=secure_password + - DB_NAME=pixel_game_db + - USE_FILE_REDIS=true + depends_on: + - mysql + restart: unless-stopped + volumes: + - ./src:/app/src + - ./logs:/app/logs + command: ["pnpm", "run", "dev"] + + mysql: + image: mysql:8.0 + environment: + - MYSQL_ROOT_PASSWORD=root_password + - MYSQL_DATABASE=pixel_game_db + - MYSQL_USER=pixel_game + - MYSQL_PASSWORD=secure_password + ports: + - "3306:3306" + volumes: + - mysql_data:/var/lib/mysql + restart: unless-stopped + command: --default-authentication-plugin=mysql_native_password + +volumes: + mysql_data: \ No newline at end of file