dockerfile构建镜像
# 该image文件继承官方的 node image
FROM node:latest
# 指定接下来的工作路径为/app
WORKDIR /usr/src/app/
# 拷贝package.json进入image文件的/app目录
COPY package.json ./
# 安装依赖
RUN npm install
# 拷贝全部的文件到app目录下
COPY ./ ./
# 执行命令
CMD ["npm", "run", "start"]
注意:RUN指令是在镜像build的时候执行,CMD指令是在镜像运行成为容器的时候执行
使用dockerfile创建镜像
docker build -t myWebApp .
- -t :指定要创建的目标镜像名
- . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
- 运行成功会吐出一个容器id
docker-compose
#Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用
version: '3.1'
services:
big_data_dev:
build:
context: ../
dockerfile: DockerfileDev
ports:
- 81:80
restart: unless-stopped
container_name: big_data_dev_container
image: big_data_dev_image
- build中context指定设定上下文根目录,然后以该目录为准指定Dockerfile。
- ports用于映射端口的标签。
- 如果前面有了build那image则用来指定镜像名称,如果没有image用来构建镜像
- restart重启策略
no,默认策略,在容器退出时不重启容器
on-failure,在容器非正常退出时(退出状态非0),才会重启容器
on-failure:3,在容器非正常退出时重启容器,最多重启3次
always,在容器退出时总是重启容器
unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
- volumes
volumes:
// 只是指定一个路径,Docker 会自动在创建一个数据卷(这个路径是容器内部的)。
- /var/lib/mysql
// 使用绝对路径挂载数据卷
- /opt/data:/var/lib/mysql
// 以 Compose 配置文件为中心的相对路径作为数据卷挂载到容器。
- ./cache:/tmp/cache
// 使用用户的相对路径(~/ 表示的目录是 /home/<用户目录>/ 或者 /root/)。ro表示只读
- ~/configs:/etc/configs/:ro
// 已经存在的命名的数据卷。
- datavolume:/var/lib/mysql