启动Docker容器时出错。我正在使用nodemon来监听文件更改。
DockerFile
FROM node:alpine
WORKDIR '/app'
COPY package.json .
RUN npm install
COPY . .
CMD ["npm","run","serve"]
Package.json
{
"dependencies": {
"express": "*",
"nodemon": "*"
},
"scripts": {
"serve": "nodemon index.js",
"start": "node index.js"
}
}
构建命令
docker build -f Dockerfile.dev -t test/nodeapp1 .
cmdLine docker cmd->
docker run -p 3000:8080 -v /app/node_modules -v pwd:/app test/nodeapp1.
我是docker的新手,无法找出原因。
答案 0 :(得分:0)
在您的dockerfile中进行此更改
FROM node:alpine
ENV NPM_CONFIG_PREFIX=/home/node/.npm-global
ENV HOME=/home/node/app
ENV PATH="/home/node/.npm-global/bin:${PATH}"
USER node
RUN npm install -g nodemon
RUN mkdir -p ${HOME}
WORKDIR ${HOME}
ADD package.json ${HOME}
RUN cd ${HOME} && npm install
CMD [ "npm" ,"run", "serve" ]
构建Docker容器
docker build -f Dockerfile -t prac/nodeApp .
运行docker容器
docker run -p 3000:8080 -v /app/node_modules -v pwd:/app prac/nodeApp
答案 1 :(得分:0)
将WORKDIR更改为新值是可行的。
FROM node:alpine
WORKDIR '/dir'
COPY package.json .
RUN npm install
COPY . .
CMD [ "npm" ,"run", "serve" ]
答案 2 :(得分:0)
您的docker run -v
选项错误。您可能实际上是想写
docker run ... -v $PWD:/app ...
docker run ... -v $(pwd):/app ...
将当前目录(分别来自PWD
环境变量或来自pwd
命令)用作bind mount。
我倾向于不推荐这种模式,特别是对于那些主机依赖性最小并且您与其他容器之间没有太多交互的Node应用程序。仅在本地安装Node(如果您尚未安装)并针对它进行实时开发可能会更容易;当您想使用Docker部署应用程序时,请使用COPY
到映像中的版本,并且不要单独使用-v
选项将代码注入到映像中。