Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker compose node express容器不';t显示错误日志并持续重新启动_Express_Docker Compose - Fatal编程技术网

Docker compose node express容器不';t显示错误日志并持续重新启动

Docker compose node express容器不';t显示错误日志并持续重新启动,express,docker-compose,Express,Docker Compose,我正在尝试使用docker compose使nginx、node express在容器上工作 但问题是,express容器并没有显示任何错误日志,说明它为什么会死掉 这是我的docker compose.yml version: '3' services: proxy: image: nginx:latest container_name: proxy ports: - "80:80" volumes: - ./proxy/nginx

我正在尝试使用docker compose使nginx、node express在容器上工作

但问题是,express容器并没有显示任何错误日志,说明它为什么会死掉

这是我的
docker compose.yml

version: '3'
services:
  proxy:
    image: nginx:latest
    container_name: proxy
    ports: 
      - "80:80"
    volumes:
      - ./proxy/nginx.conf:/etc/nginx/nginx.conf
    restart: "unless-stopped"  
  express:
    build:
      context: ./server
    container_name: express
    expose:
      - "3000"
    volumes:
      - ./source:/source
      - /source/node_modules
    restart: "unless-stopped"
这是我的
目录结构

源目录,我从输出中移动所有文件和目录

这是我的
Dockerfile

FROM node:12

COPY package*.json /source/
WORKDIR /source
RUN npm install

CMD [ "node", "app.js" ]
这是我的package.json

 {
  "name": "docker_web_app",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "scripts": {
    "start": "node app.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "sjk5766",
  "license": "ISC",
  "dependencies": {
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "express": "~4.16.1",
    "http-errors": "~1.6.3",
    "jade": "~1.11.0",
    "morgan": "~1.9.1"
  }
}
当我在
docker compose up-d
之后执行
docker ps
时,结果如下所示。

当我做docker logs express时,什么都看不见


我真的想知道问题出在哪里。

考虑到您的express应用程序在没有docker的情况下运行良好

您可以按如下所示更改Dockerfile

FROM node:12

WORKDIR /source

COPY . .

RUN npm install

EXPOSE 3000

CMD [ "node", "app.js" ]

version: '3'
services:
  proxy:
    image: nginx:latest
    container_name: proxy
    ports: 
      - "80:80"
    volumes:
      - ./proxy/nginx.conf:/etc/nginx/nginx.conf
    networks:
      - test_bridge
    restart: "unless-stopped"
  express:
    build: ./server
    container_name: express
    ports:
      - "3000:3000"
    networks:
      - test_bridge
networks:
  test_bridge:
    driver: bridge
COPY命令将本地目录代码复制到docker中的/server目录 尝试docker编写文件,如下所示

FROM node:12

WORKDIR /source

COPY . .

RUN npm install

EXPOSE 3000

CMD [ "node", "app.js" ]

version: '3'
services:
  proxy:
    image: nginx:latest
    container_name: proxy
    ports: 
      - "80:80"
    volumes:
      - ./proxy/nginx.conf:/etc/nginx/nginx.conf
    networks:
      - test_bridge
    restart: "unless-stopped"
  express:
    build: ./server
    container_name: express
    ports:
      - "3000:3000"
    networks:
      - test_bridge
networks:
  test_bridge:
    driver: bridge

它是否在没有docker的情况下运行…就像localhost:3000我很困惑。没有docker它是如何工作的。。?docker-compose.yml或Dockerfileyou有两个选项..如果在本地安装了nodejs,您可以通过运行命令1在本地对其进行测试。npm安装2.node app.js,然后检查它正在哪个端口上运行..第二个选项是..不使用nginx,只需从express code Dockerfile构建docker映像,然后运行容器1。cd./server 2.docker build-t image\u name。3.docker run-itd-p 3000:3000 image_name我以为这个问题来自docker设置,但来自app.js源代码。谢谢你节省了我的时间。