Skip to content

Docker 笔记(构建)

编写 dockerfle

Vue SPA 模板

sh
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 模板

sh
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 文件来忽略一些直接跳过的文件:

sh
node_modules
npm-debug.log

如何构建

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

如何导出

sh
docker save -o myimages.gz nuxt-demo

如何导入

sh
docker load -i myimages.gz

如何运行

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

容器间通信

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

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

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

如何备份数据卷

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

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

Version 4.2 (core-1.3.4)