前提
docker-compseを使ってnode.jsで作ったHTTPサーバーを起動したいです。
実現したいこと
docker-compose, nodejs, mysqlでサーバーを立ち上げる時、npm startしたら起動するようにしたいです。
発生している問題・エラーメッセージ
modlueが見つからないエラーが発生しています
このindex.jsはサーバー立ち上げていて、パスもあっているはずなのに見つからないエラーが発生しているのはなぜでしょうか????
$ docker-compose up ~一部略~ node_app_container | node:internal/modules/cjs/loader:936 node_app_container | throw err; node_app_container | ^ node_app_container | node_app_container | Error: Cannot find module '/node/app/src/index.js' node_app_container | at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15) node_app_container | at Function.Module._load (node:internal/modules/cjs/loader:778:27) node_app_container | at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12) node_app_container | at node:internal/main/run_main_module:17:47 { node_app_container | code: 'MODULE_NOT_FOUND', node_app_container | requireStack: [] node_app_container | } node_app_container exited with code 1
該当のソースコード
tree
1├─mysql 2│ ├─conf 3│ │ └─my.conf 4│ └─data 5│ ├─mysql 6│ ├─performance_schema 7│ └─sys 8└─node 9│ └─app 10│ └─src 11│ │ ├─index.js 12│ │ └─Dockerfile 13│ └─package.json 14└─docker-compose.yml
json
1// package.json 2{ 3 "name": "mysql", 4 "version": "1.0.0", 5 "description": "", 6 "main": "index.js", 7 "scripts": { 8 "start": "node index.js" 9 }, 10 "author": "", 11 "license" : "MIT", 12 "dependencies": { 13 "mysql": "^2.17.1", 14 "express": "^4.16.4" 15 } 16 }
Docker
1# Dockerfile 2FROM node:16-alpine3.15 3WORKDIR /node/app/src 4COPY ./app/package.json ./ 5RUN ["npm", "install"] 6EXPOSE 8005 7CMD [ "npm", "start" ]
docker
1# docker-compose.yml 2version: '3' 3services: 4 app: 5 build: 6 context: ./node 7 dockerfile: Dockerfile 8 container_name: node_app_container 9 environment: 10 - MYSQL_HOST=${DB_HOST_NAME} 11 - MYSQL_USER=${DB_USER} 12 - MYSQL_PASS=${DB_PASS} 13 - MYSQL_DB=${DB_NAME} 14 volumes: 15 - ./node/app/src:/app/src 16 ports: 17 - "30001:8005" 18 19 db: 20 env_file: .env 21 restart: always 22 image: mysql:5.7 23 container_name: node_db_container 24 volumes: 25 - ./mysql/data:/var/lib/mysql 26 - ./mysql/conf/my.conf:/etc/mysql/conf.d/my.cnf 27 ports: 28 - "3306:3306" 29 environment: 30 - MYSQL_USER=${DB_USER} 31 - MYSQL_PASSWORD=${DB_PASS} 32 - MYSQL_ROOT_PASSWORD=${DB_PASS} 33 - TZ=${DB_TZ}
javascript
1// index.js 2const http = require("http"); 3 4const server = http.createServer((request, response) => { 5 response.writeHead(200, { 6 "Content-Type": "text/html" 7 }); 8 9 const responseMessage = "<h1>Hello World</h1>"; 10 response.end(responseMessage); 11 console.log(`Sent a response : ${responseMessage}`); 12}); 13 14server.listen(port);

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。