【问题标题】:Live debugging node application running in docker在 docker 中运行的实时调试节点应用程序
【发布时间】:2018-08-10 03:05:40
【问题描述】:

我在 Docker 上运行了内置于 React 的应用程序。我正在寻找一种调试它的方法。我正在使用 Visual Studio 代码。这是我的 Docker 文件和 Docker-compose 文件

FROM node:boron


ARG build_env

RUN mkdir /usr/share/unicode && cd /usr/share/unicode && wget ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt

COPY package.json /tmp/package.json

RUN cd /tmp && npm install

COPY ./shim/RelayDefaultNetworkLayer.js /tmp/node_modules/react-relay/lib/RelayDefaultNetworkLayer.js
COPY ./shim/buildRQL.js /tmp/node_modules/react-relay/lib/buildRQL.js

RUN mkdir -p /var/www && cp -a /tmp/node_modules /var/www/

WORKDIR /var/www

COPY . ./

RUN if [ "$build_env" != "development" ]; then npm run build-webpack && npm run gulp; fi

EXPOSE 8080

CMD ["npm", "run", "--debug=5858 prod"]

我的 docker-compose 文件看起来像

version: '2'

services:
  nginx:
    container_name: nginx
    image: openroad/nginx
    build:
      context: nginx
    ports:
      - "80:80"
    volumes:
      - ./nginx/nginx.development.conf:/etc/nginx/nginx.conf
    networks:
      - orion-network

  graphql:
    container_name: graphql
    image: openroad/graphql
    build:
      context: integration_api
    volumes:
      - ./integration_api:/var/www
    environment:
      - NODE_ENV=development
    command: npm run dev
    working_dir: /var/www
    networks:
      orion-network:
        ipv4_address: 172.16.238.10

  pegasus:
    container_name: pegasus
    image: openroad/pegasus
    build:
      context: pegasus
      args:
        build_env: development
    expose:
      - "3000"
    volumes:
      - ./pegasus:/var/www/public
    environment:
      - NODE_ENV=development
    command: npm run dev
    working_dir: /var/www/public
    extra_hosts:
      - "local.pegasus.com:192.168.99.100"
    networks:
      orion-network:
        ipv4_address: 172.16.238.11

  frontend:
    container_name: orion-frontend
    image: openroad/orion-frontend
    build:
      context: orion-frontend
      args:
        build_env: development
    expose:
      - "3000"
    ports:
      - "5858:5858"
    volumes:
      - ./orion-frontend:/var/www/public
    environment:
      - NODE_ENV=development
    command: npm run --debug=5858 dev
    working_dir: /var/www/public
    networks:
      orion-network:
        ipv4_address: 172.16.238.12

  admin:
      container_name: orion-admin
      image: openroad/orion-admin
      build:
        context: orion-admin
        args:
          build_env: development
      expose:
        - "3000"
      volumes:
        - ./orion-admin:/var/www/
      environment:
        - NODE_ENV=development
      command: npm run dev
      working_dir: /var/www/
      networks:
        orion-network:
          ipv4_address: 172.16.238.13

  uploads:
    container_name: orion-uploads
    image: openroad/orion-uploads
    build:
      context: orion-uploads
    volumes:
      - ./orion-uploads:/var/www/
    working_dir: /var/www/
    networks:
      orion-network:
        ipv4_address: 172.16.238.14

  dashboard:
    container_name: orion-dashboard
    image: openroad/orion-dashboard
    build:
      context: orion-dashboard
      args:
        build_env: development
    volumes:
      - ./orion-dashboard/src:/var/www/src
      - ./orion-dashboard/package.json:/var/www/package.json
      - ./orion-dashboard/webpack.config.babel.js:/var/www/webpack.config.babel.js
      - ./orion-dashboard/node_modules:/var/www/node_modules
      - ./orion-dashboard/data/babelRelayPlugin.js:/var/www/data/babelRelayPlugin.js
    working_dir: /var/www
    environment:
      - NODE_ENV=development
      - GRAPHQLURL=http://172.16.238.10:8080/graphql
      - PORT=8080
    command: npm run dev
    networks:
      orion-network:
        ipv4_address: 172.16.238.15

networks:
  orion-network:
    driver: bridge
    driver_opts:
      com.docker.network.bridge.enable_ip_masquerade: "true"
    ipam:
      driver: default
      config:
      - subnet: 172.16.238.0/24
        gateway: 172.16.238.1

我希望能够调试在 orion-frontend 容器下运行的应用程序。我尝试了各种选择但没有成功。我已经尝试过https://codefresh.io/docker-tutorial/debug_node_in_docker/https://blog.docker.com/2016/07/live-debugging-docker/

【问题讨论】:

    标签: docker docker-compose


    【解决方案1】:

    我可能对 npm run 的命令语法有误(在 npm 文档中没有找到此命令),但您可能需要将 --debug=5858prod args 分开,如下所示:

    CMD ["npm", "run", "--debug=5858", "prod"]
    

    【讨论】:

      猜你喜欢
      • 2016-07-25
      • 1970-01-01
      • 2017-05-03
      • 1970-01-01
      • 2018-03-12
      • 2016-04-05
      • 1970-01-01
      • 2020-10-11
      相关资源
      最近更新 更多