admin管理员组文章数量:1410681
This application is written in ES6 and pile to ES5 using babel. The build files stored in the following order inside the build folder. the dockerfile reside in the outside the build folder.
-build
---public
---server
---shared
---package.json
-Dockerfile
This application is written in ES6 and pile to ES5 using babel. The build files stored in the following order inside the build folder. the dockerfile reside in the outside the build folder.
-build
---public
---server
---shared
---package.json
-Dockerfile
This is my docker file.
FROM node:8.9-alpine
ENV NODE_ENV production
WORKDIR /usr/src/app
ADD ./build/ /usr/src/app
RUN npm install --production --silent
RUN ls /usr/src/app/
RUN ls /usr/src/app/server/
EXPOSE 3000
CMD ["node", "/usr/src/app/server/index.js", "--config", "/usr/src/app/config.json"]
This is the output I get when running the image build mand.
Sending build context to Docker daemon 16.08MB
Step 1/9 : FROM node:8.9-alpine
---> 406f227b21f5
Step 2/9 : ENV NODE_ENV production
---> Using cache
---> 090d3e742281
Step 3/9 : WORKDIR /usr/src/app
---> Using cache
---> fa2a344bd8ee
Step 4/9 : ADD ./build/ /usr/src/app
---> 93559e34a45a
Step 5/9 : RUN npm install --production --silent
---> Running in ebc2b6b2ba1a
added 212 packages in 15.212s
Removing intermediate container ebc2b6b2ba1a
---> b49180988a07
Step 6/9 : RUN ls /usr/src/app/
---> Running in b140530cb8ca
build-info.json
node_modules
package-lock.json
package.json
public
server
shared
Removing intermediate container b140530cb8ca
---> 0712e1b84e1a
Step 7/9 : RUN ls /usr/src/app/server/
---> Running in b6570fbc8d2c
auth
configuration
database
files
index.js
sessions
users
utils
Removing intermediate container b6570fbc8d2c
---> c49775551756
Step 8/9 : EXPOSE 3000
---> Running in 9318dfc0f183
Removing intermediate container 9318dfc0f183
---> ad20aec92973
Step 9/9 : CMD ["node", "/usr/src/app/server/index.js", "--config", "/usr/src/app/config.json"]
---> Running in fa6c2e388906
Removing intermediate container fa6c2e388906
---> ba1ced3be150
Successfully built ba1ced3be150
Successfully tagged tiqri:myclaim
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is remended to double check and reset permissions for sensitive files and directories.
After image created, i start the image using the following mand. "docker run -d -v C:\portal\environments\development:/usr/src/app/ -p 3000:80 f057e4bc8191" There is volume map for config files.
But the container, not running. when I check the logs, it shows the following error.
C:\portal>docker logs c819d39fea61
module.js:540
throw err;
^
Error: Cannot find module '/usr/src/app/server/index.js'
at Function.Module._resolveFilename (module.js:538:15)
at Function.Module._load (module.js:468:25)
at Function.Module.runMain (module.js:684:10)
at startup (bootstrap_node.js:187:16)
at bootstrap_node.js:608:3
I couldn't figure out why giving this error even though all folders are in place in the docker container(RUN ls- shows the folder structure in the container). still, I couldn't start the container because of this error.
UPDATE
Based on the answer given by @Marcos Casagrande, made changes to the docker file and container run mand as follows. Now I'm getting a new error.
After made changes in the Dockerfile.
FROM node:8.9-alpine
ENV NODE_ENV production
WORKDIR /usr/src/app
ADD ./build/ /usr/src/app
RUN npm install --production --silent && mv node_modules ../
RUN mkdir /usr/src/app/environments
RUN mkdir /usr/src/app/environments/development
RUN ls /usr/src/app/
RUN ls /usr/src/app/server/
EXPOSE 3000
CMD ["node", "/usr/src/app/server/index.js", "--config", "/usr/src/app/environments/development/config.json"]
container run mand changed as follows, "docker run -d -v C:\portal\environments\development:/usr/src/app/environments/development -p 3000:80 ca290d67ff34"
Then I get the following error when checking the logs. The container does not start yet.
/usr/src/app/environments/development/config.json
/usr/src/app/environments/development/config.json
fs.js:646
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
^
Error: ENOENT: no such file or directory, open '/usr/src/app/environments/development/config.json'
at Object.fs.openSync (fs.js:646:18)
at Object.fs.readFileSync (fs.js:551:33)
at loadJSON (/usr/src/node_modules/convict/lib/convict.js:364:25)
at /usr/src/node_modules/convict/lib/convict.js:501:17
at Array.forEach (<anonymous>)
at Object.loadFile (/usr/src/node_modules/convict/lib/convict.js:500:13)
at Object.<anonymous> (/usr/src/app/server/configuration/configuration.js:156:19)
at Module._pile (module.js:643:30)
at Object.Module._extensions..js (module.js:654:10)
at Module.load (module.js:556:32)
Share
edited Jul 14, 2018 at 23:09
Manojb86
asked Jul 14, 2018 at 22:14
Manojb86Manojb86
3112 gold badges5 silver badges13 bronze badges
3
-
Show the contents of:
C:\portal\environments\development
, does that folder has aserver
dir in it? – Marcos Casagrande Commented Jul 14, 2018 at 22:26 - @MarcosCasagrande that folder contains the config files required to run the app. the server folder contains in the build folder which I mention in the beginning. – Manojb86 Commented Jul 14, 2018 at 22:33
- Then see my answer in a minute. – Marcos Casagrande Commented Jul 14, 2018 at 22:34
2 Answers
Reset to default 1Without knowing the contents of C:\portal\environments\development
I will assume that there isn't server/index.js
in it.
I couldn't figure out why giving this error even though all folders are in place in the docker container(RUN ls- shows the folder structure in the container). still i couldnt start the container because of this error.
RUN ls
is executed after you copy the build dir, when building the docker image, if you run ls
when you start the container you will see that there is no server/index.js
While you're copying the build
folder to /usr/src/app/
, you're overriding that files when mounting development
folder on /usr/src/app
.
The easiest way, is to mount C:\portal\environments\development
on /usr/src/app/development
.
docker run -d -v C:\portal\environments\development:/usr/src/app/development/ -p 3000:80 f057e4bc8191
Also you can mount development
on /usr/src/app
and then use the build/server
that was build on the image:
-v C:\portal\environments\development:/usr/src/app/ -v /usr/src/app/server
You will have to do that for every folder that you need from the built image.
-v /usr/src/app/server -v /usr/src/app/public -v ...
I had a similar problem running a docker container. I figured out I might I have created the image wrongly and I resolved this by deleting the image and rebuilding. but first I had to delete the existing containers of the image like below
docker rm containerId
then I deleted the image like below
docker rmi imageId
then I rebuilt the image and ran to create a new container.
本文标签: javascriptCannot find module error for a node js app running in a docker environmentStack Overflow
版权声明:本文标题:javascript - Cannot find module error for a node js app running in a docker environment - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1744813500a2626541.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论