Docker compose node express容器不';t显示错误日志并持续重新启动
我正在尝试使用docker compose使nginx、node express在容器上工作 但问题是,express容器并没有显示任何错误日志,说明它为什么会死掉 这是我的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.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源代码。谢谢你节省了我的时间。