【问题标题】:Docker possibly causing my packages to bug out?Docker 可能导致我的包出错?
【发布时间】:2019-05-13 17:22:46
【问题描述】:

我正在使用 docker 部署我接管的 reactJs 项目,我不仅在我的副本上遇到了问题,而且在使用该项目的所有其他人身上都遇到了问题:我无法使用任何新包...

所以已经有现有的包在使用中,但对于我介绍的任何新包(例如react-CSV),它通过 npm 安装绝对没问题,我将它导入所需的 js 文件,ctrl + click 带我到源代码,但在使用 docker compose up 时,我得到以下信息:

我和一位同事谈过,他也认为这是一个 docker 问题,但是我们都很少接触到它。

参考文件:

package.json

"raw-loader": "^0.5.1",
    "react": "^15.3.1",
    "react-addons-css-transition-group": "*",
    "react-addons-pure-render-mixin": "^15.3.2",
    "react-addons-test-utils": "^15.3.1",
    "react-csv": "^1.0.19",
    "react-dom": "^15.3.1",
    "react-redux": "^4.4.5",
    "react-transform-catch-errors": "^1.0.2",
    "react-transform-hmr": "^1.0.4",
    "redbox-react": "^1.3.0",

导入:

import React, { PropTypes } from 'react';
import { createStructuredSelector } from 'reselect';
import { connect } from 'react-redux';
import withStyles from 'isomorphic-style-loader/lib/withStyles';
import Modal from '../../Modal';
import Calendar from '../../../../../../lib/components/Calendar';
import formatPrice from '../../../../../../core/formatPrice';
import s from './SeasonalCustomers.scss';
import react-csv from 'react-csv'; ***** HERE *****

import {
  fetchSeasonalCustomersReportData as fetchSeasonalCustomersReportDataActionCreator,
  exportSeasonalCustomerReport as exportSeasonalCustomerReportActionCreator,
  REPORTS_SHOW_SEASONAL_CUSTOMERS,
} from '../../../actions/reports';

let selectedFromDate;
let selectedToDate;

docker-compose.yaml 文件:

version: "2"

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile.dev
    depends_on:
      - redis
      - db
    volumes:
      - .:/app
      - node-modules:/app/node_modules
      - ./tmp:/data/tmp
    command: bash -c "npm start"
    ports:
      - "3000:3000"
      - "3001:3001"
    environment:
      - NODE_ENV=development
      - DATABASE_URL=**********************
      - REDIS_URL=redis://redis/0
      - WEB_PROCESSES=1
      - WORKER_PROCESSES=1
      - MANDRILL_API_KEY=****************
      - SMTP_FROM_ADDRESS=***************
      - HTTP_AUTH_ENABLED=TRUE
      - BASE_URL=******************
  # worker:
  #   build:
  #     context: .
  #     dockerfile: Dockerfile.dev
  #   volumes:
  #     - .:/app
  #     - node-modules:/app/node_modules
  #   command: /app/node_modules/.bin/nodemon --exec /app/node_modules/.bin/babel-node --presets=es2015 -- src/worker.js
  db:
    image: "postgres:9.5.3"
    environment:
      # POSTGRES_USER: postgres
      POSTGRES_DB: ticketsystem
    ports:
      - "5432:5432"
  redis:
    image: "redis:4.0.0-alpine"

volumes:
  node-modules: {}

【问题讨论】:

    标签: reactjs docker npm


    【解决方案1】:

    仔细查看 docker-compose.yaml 的挂载,尤其是这部分:

    volumes:
      - .:/app
      - node-modules:/app/node_modules
    

    您在当前文件夹中加载,但取消了节点模块,这将是您容器中的一个空文件夹。这就是再次运行npm installyarn install 将修复您的应用程序的原因。

    【讨论】:

      【解决方案2】:

      好的-我有一个解决方案,但是我仍然不知道为什么会出现这种情况,包括启动脚本中的npm install --save prop-types 完成了这项工作,如果有人能解释为什么会修复它,将不胜感激。

      【讨论】:

      • 看来您刚刚忘记运行 npm install。你能展示你的 docker-compose 配置吗?
      • 您好,我曾经将 npm install 包含在我的启动脚本中,但由于它浪费时间并且已经运行,所以将其删除。我不得不再次运行它会发生什么?使用 docker-compose.yaml 更新 :)
      猜你喜欢
      • 1970-01-01
      • 2016-12-27
      • 2011-02-18
      • 1970-01-01
      • 2015-10-07
      • 2014-01-01
      • 1970-01-01
      • 2017-03-23
      • 1970-01-01
      相关资源
      最近更新 更多