看這篇文章,必須知道基礎的docker, 本文只提供思路和部分代碼, 不負責教
所有的命令必須謹慎操作!三思而後行
命令
- 停止所有運行的容器
docker stop $(docker ps -a -q)
- 刪除所有的容器
docker rm $(docker ps -a -q)
- 使用docker-compose啓動容器
docker-compose up -d
- 使用docker-compose關閉容器
docker-compose down
- 查看Log
docker logs ${容器id}
部署mysql
docker-compose
services:
mysql:
network_mode: "host"
environment:
MYSQL_ROOT_PASSWORD: "yourpassword"
MYSQL_USER: 'test'
MYSQL_PASS: 'yourpassword'
image: "docker.io/mysql:latest"
restart: always // 連不上就一直重試
// depends_on: 選擇依賴於某個服務,依賴的服務會先加載
// - 'sss'
volumes:
- "./db:/var/lib/mysql"
- "./conf/my.cnf:/etc/my.cnf"
- "./init:/docker-entrypoint-initdb.d/"
ports:
- "3306:33060"
自動加載sql語句,實現初始化數據庫
mysql的官方鏡像中,會在加載時執行docker-entrypoint-initdb.d下面文件夾下的sql文件 利用這個實現初始化
如果mysql數據文件夾中有數據,則不會加載sql文件
EGG項目配合docker: 直接被中斷
因爲egg-scripts
自己有一套守護進程,去掉daemon
參數
"start": "egg-scripts start --title=egg-server-broken-chain",
部署NodeJs項目
- 新建Dockerfile文件
FROM node:10.13-alpine
ENV NODE_ENV production
WORKDIR /usr/src/app
COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"]
RUN npm install -g cnpm
RUN cnpm install --production --silent
COPY . .
EXPOSE 7001
CMD [ "npm", "start"]
- 在docker-compose.yml中添加信息,用docker-compose管理多個鏡像相當方便
最終的docker-compose.yml文件
version: '2'
services:
broken-chain:
image: broken-chain
build: .
environment:
NODE_ENV: production
ports:
- 7001:7001
depends_on:
- "mysql"
restart: always
mysql:
environment:
MYSQL_ROOT_PASSWORD: "123"
image: "docker.io/mysql:5.6"
volumes:
- "./mysql/init:/docker-entrypoint-initdb.d/"
ports:
- "3306:3306"
發佈鏡像
- 登錄
Dockerhub
docker login
- 給鏡像打上標籤
docker tag ${鏡像id} ${用戶名}/${鏡像名}:${tag標籤}
- push推到dockerhub
docker push ${用戶名}/${鏡像名}:${tag標籤}
最後
最終,你要把你做的項目給別人用,開箱即用的那種。你需要
- 新建目錄結構
- init
- xxx.sql //初始化的sql語句
- docker-compose.yml
- docker-compose.yml如下
version: '2'
services:
broken-chain:
image: ${你的用戶名}/${你的鏡像} // 這回直接拉取你在dockerhub上的鏡像
// build: . 去掉構建步驟
environment:
NODE_ENV: production
ports:
- 7001:7001
depends_on:
- "mysql"
restart: always
mysql:
environment:
MYSQL_ROOT_PASSWORD: "123"
image: "docker.io/mysql:5.6"
volumes:
- "./mysql/init:/docker-entrypoint-initdb.d/"
ports:
- "3306:3306"
- 壓縮zip給別人
使用命令一鍵運行( 數據庫 + 項目 )
docker-compose up -d
- 舒服了