Docker 笔记(构建)

# 编写 dockerfle

# Vue SPA 模板

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"]
1
2
3
4
5
6
7
8
9

# NuxtJS 模板

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"]
1
2
3
4
5
6
7
8
9
10
11
12
13

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

node_modules
npm-debug.log
1
2

# 如何构建

# build image
docker build -t nuxt-demo ./
1
2

# 如何导出

docker save -o myimages.gz nuxt-demo
1

# 如何导入

docker load -i myimages.gz
1

# 如何运行

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

# 容器间通信

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

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

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

# 如何备份数据卷

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

# 备份
tar cvpzf /backup/backup.tar.gz /data
# 恢复
tar xvpzf /backup/backup.tar.gz -C /
1
2
3
4