*.md
node_modules/
.git/
.DS_Store
.vscode/
.dockerignore
docker build 时,会先解析 .dockerignore,把该忽略的文件忽略掉,然后把剩余文件打包发送给 docker daemon 作为上下文来构建产生镜像。
FROM node:latest
WORKDIR /app
COPY . .
RUN npm config set registry https://registry.npmmirror.com/
RUN npm install -g http-server
EXPOSE 8080
VOLUME /app
CMD ["http-server", "-p", "8080"]
- FROM:基于一个基础镜像来修改
- WORKDIR:指定当前工作目录
- COPY:把容器外的内容复制到容器内
- EXPOSE:声明当前容器要访问的网络端口,比如这里起服务会用到 8080
- RUN:在容器内执行命令
- CMD:容器启动的时候执行的命令
- VOLUME:在 dockerfile 里指定 VOLUME 之后,如果你 docker run 的时候没有带 -v,那会放在一个临时的目录里
- 在当前目录创建一个index.html文件,并通过Dockerfile生成镜像(node-web是镜像名,test是镜像的标签):
docker build -t node-web:test .
- 通过这个镜像生成容器,在浏览器访问http://127.0.0.1:8099 可以看到index.html文件里的内容,并且/app目录也被挂载到了/xxx/docker/volumes/随机名称 的目录下:
docker run --name tnw -p 8099:8080 -d node-tt:web