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