Skip to content

Docker 笔记(构建)

编写 dockerfle

Vue SPA 模板

bash
FROM node:lts-slim
MAINTAINER wolfx
RUN mkdir -p /app
WORKDIR /app
COPY dist/ /app
RUN npm config set registry https://registry.npm.taobao.org
RUN npm install -g http-server
EXPOSE 8080
CMD ["http-server", "/app"]
FROM node:lts-slim
MAINTAINER wolfx
RUN mkdir -p /app
WORKDIR /app
COPY dist/ /app
RUN npm config set registry https://registry.npm.taobao.org
RUN npm install -g http-server
EXPOSE 8080
CMD ["http-server", "/app"]

NuxtJS 模板

bash
FROM node:lts-slim
MAINTAINER wolfx
ENV NODE_ENV=production
ENV HOST 0.0.0.0
RUN mkdir -p /app
COPY ./ /app
WORKDIR /app
EXPOSE 3000
## RUN npm config set registry https://registry.npm.taobao.org
RUN npm config set registry http://127.0.0.1:8889/repository/npm-proxy/
RUN npm install --production
RUN npm run build
CMD ["npm", "start"]
FROM node:lts-slim
MAINTAINER wolfx
ENV NODE_ENV=production
ENV HOST 0.0.0.0
RUN mkdir -p /app
COPY ./ /app
WORKDIR /app
EXPOSE 3000
## RUN npm config set registry https://registry.npm.taobao.org
RUN npm config set registry http://127.0.0.1:8889/repository/npm-proxy/
RUN npm install --production
RUN npm run build
CMD ["npm", "start"]

项目中创建一个 .dockerignore 文件来忽略一些直接跳过的文件:

bash
node_modules
npm-debug.log
node_modules
npm-debug.log

如何构建

bash
## build image
docker build -t nuxt-demo ./
## build image
docker build -t nuxt-demo ./

如何导出

bash
docker save -o myimages.gz nuxt-demo
docker save -o myimages.gz nuxt-demo

如何导入

bash
docker load -i myimages.gz
docker load -i myimages.gz

如何运行

bash
## 从容器中的3000映射到容器外8080
docker run --name nuxt-demo -dt -p 8080:3000 nuxt-demo
## 从容器中的3000映射到容器外8080
docker run --name nuxt-demo -dt -p 8080:3000 nuxt-demo

容器间通信

bash
## --link <name or id>:alias
## 创建并启动名为node的容器,并把该容器和名为mysql的容器链接起来
docker run -d --name node --link mysql:mysql-host node:8
## --link <name or id>:alias
## 创建并启动名为node的容器,并把该容器和名为mysql的容器链接起来
docker run -d --name node --link mysql:mysql-host node:8

如何让容器支持后台服务(特权模式)

bash
docker run -d -name centos7 --privileged=true centos:7 /usr/sbin/init
docker run -d -name centos7 --privileged=true centos:7 /usr/sbin/init

如何备份数据卷

docker 没有提供特有的备份功能,需要用户用容器挂载卷,然后用 tar 自行备份。不推荐在容器外备份,因为权限可能会异常,对权限敏感的应用就无法正常运行。

bash
## 备份
tar cvpzf /backup/backup.tar.gz /data
## 恢复
tar xvpzf /backup/backup.tar.gz -C /
## 备份
tar cvpzf /backup/backup.tar.gz /data
## 恢复
tar xvpzf /backup/backup.tar.gz -C /

最后编辑时间:

Version 4.0 (framework-1.0.0-rc.20)