考虑使用Docker以下开发环境:
# /.env
CONTAINER_PROJECT_PATH=/projects/my_project
# /docker-compose.yml
version: '2'
services:
web:
restart: always
build: ./docker/web
working_dir: ${CONTAINER_PROJECT_PATH}
ports:
- "3000:3000"
volumes:
- .:${CONTAINER_PROJECT_PATH}
- ./node_modules:${CONTAINER_PROJECT_PATH}/node_modules
# /docker/web/Dockerfile
FROM keymetrics/pm2:latest-alpine
FROM node:8.11.4
ENV NPM_CONFIG_PREFIX=/home/node/.npm-global
RUN mkdir -p /projects/my_project
RUN chown node:node /projects/my_project
# If you are going to change WORKDIR value,
# please also consider to change .env file
WORKDIR /projects/my_project
USER node
RUN npm install pm2 -g
CMD npm install && node /projects/my_project/src/index.js
如何在容器中安装新模块?由于npm install
属于node_module
用户,因此主机上的root
无法正常工作。有什么办法可以从容器中运行它?
编辑:我可以在容器外部运行某些“单一代码”来安装模块吗?
答案 0 :(得分:2)
假设您不想编辑Dockerfile
,则始终可以使用-it
标志在正在运行的容器上执行命令:
$ docker run -it <container name> /usr/bin/npm install my_moduel
答案 1 :(得分:0)
首次访问容器内部:
$ docker exec -it <container name> /bin/bash
然后在容器内:
$ npm install pm2 -g
答案 2 :(得分:0)
你要么
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>preview photo</title>
</head>
<body>
<form>
<input type="file" onChange="preview_2(this);"><br>
<img id="imagenFondo" style="height: 300px;width: 300px;">
</form>
</body>
</html>
之前,以便您以默认用户(root)身份运行,或者USER node
标志(告诉npm进行全局安装),它就会在您的项目-g
中,您可以使用node_modules
或npx pm2
来运行它,也可以从node_modules/.bin/pm2
中以编程方式运行它(对于后者,我建议将其添加到您的index.js
中,而无需在全部)。