NodeJS with Docker-compose



我尝试在docker中运行node js。我在运行命令 docker-compose up 时发现错误。这是文件夹层次结构:

test_dock4
- db
- web
- node_modules
- Dockerfile
- index.js
- package-lock.json
- package.json
- docker-compose.yml

这是我的 docker-compose.yml 代码

version: '2'
services:
web:
container_name: web
build: ./web/
links:
- db
environment:
- DATABASE_URL=postgres://user:pass@db:5432/new_databases
command: node index.js
ports:
- "8080:8080"
volumes:
- ./web:/webapp
db:
image: postgres
container_name: db
ports:
- "5432:5432"
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=pass
- POSTGRES_DATABASE=new_databases

这是我的 Dockerfile 代码

FROM node:8.12.0
# Create app directory
RUN mkdir /webapp
WORKDIR /webapp
# Install app dependencies
COPY package.json /webapp
RUN npm install
# Bundle app source
COPY . /webapp
EXPOSE 8080
CMD ["node", "index.js"]

错误:

web    |     Error: Cannot find module '/webapp/index.js'
web    |     at Function.Module._resolveFilename (module.js:548:15)
web    |     at Function.Module._load (module.js:475:25)
web    |     at Function.Module.runMain (module.js:694:10)
web    |     at startup (bootstrap_node.js:204:16)
web    |     at bootstrap_node.js:625:3
web exited with code 1

出了什么问题?我是 Docker 的新手。但是我已经尝试了几件事,例如清除所有容器,尝试重现它,但似乎没有任何效果。 任何帮助,都会非常有帮助。谢谢

我已经复制了相同的场景,问题出在您通过 docker-compose.yml 挂载的卷上。您已经通过 Dockerfile 将所需的所有文件复制到 webapp 文件夹中,并尝试在外部挂载相同的文件夹,该文件夹试图覆盖文件并使 webapp 文件夹为空。

volumes:
- ./web:/webapp

从docker-compose.yml中删除上述两行并尝试一下

测试。

当 docker 容器启动时,它会尝试运行命令:command: node index.js。 它找不到该文件并失败。 您需要检查/webapp 文件夹中正确复制的 fils

尝试执行COPY . web。由于您将文件夹重命名为 web。

最新更新