安装docker
登录服务器
ssh root@ip...
更新依赖包
apt-get或者yum update
安装docker
curl -sSL https://get.daocloud.io/docker | sh
镜像加速:国内镜像和七牛云
vi /etc/docker/daemon.json
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com"
]
}
启动docker
sudo systemctl enable docker
sudo systemctl start docker
测试docker,是否可以正常运行
docker run hello-world

发布项目
下载nginx镜像
// 拉取docker官方的镜像,面向docker的只读模板
docker pull nginx
查看安装结果
docker images nginx
写入测试文件
mkdir www
echo 'hello docker!!' >> www/index.html
使用docker发布
// nginx默认的服务端口是80,把虚拟机的80端口映射到8000端口
docker run -p 8000:80 -v $PWD/www:/usr/share/nginx/html nginx
// 后台启动
docker run -p 8000:80 -v $PWD/www:/usr/share/nginx/html -d nginx
端口占用,换了个端口

docker ps
docker ps -a // 查看全部
停止、启用进程 镜像的id
docker stop uuid
docker start uuid
伪终端,进入某个进程,每个进程都相当于是一个小的linux服务器。
docker exec -it uuid /bin/bash
如图:

docker rm uuid
定制镜像
登录服务器,创建文件夹 source/docker/nginx
vi DockerFile
FROM nginx:latest
RUN echo '<h1>Hello, dockerFile ! </h1>' > /usr/share/nginx/html/index.html
如图:

定制镜像
// 定制一个版本是kaixin的nginx镜像
docker build -t nginx:kaixin .
运行镜像
docker run -p 9000:80 nginx:kaixin

定制node.js镜像
下载node
yum install -y nodejs
npm init -y
npm install koa -S
创建执行文件
vi app.js
const Koa = require('koa')
const app = new Koa()
app.use(ctx => {
ctx.body = 'Hello Docker/node'
})
app.listen(3000, () => {
console.log('app started at http://localhost:3000/')
})
定制镜像
vim DockerFile
1.node 10版本,比较稳定,alpine是经典的linux系统,体积小
2.把宿主机的当前目录添加到 /app下。比如会把app.js、package.json 添加到这个目录下
3.WORKDIR 相当于cd
FROM node:10-alpine
ADD . /app
WORKDIR /app
RUN npm install
EXPOSE 3000
CMD ["node", "app.js"]
定制镜像
docker build -t mynode .

docker run -p 3000:3000 -d mynode

定制pm2镜像
将目录下的node拷贝一份,pm2和node相似
cp -r node pm2
添加pm2描述文件
vi process.yml
// script 执行的文件、2个进程、监听、设置node环境变量
apps:
- script : app.js
instances: 2
watch : true
env :
NODE_ENV: production
编辑Dockerfeil
// 使用pm2的官方镜像
FROM keymetrics/pm2:latest-alpine
WORKDIR /usr/src/app
ADD . /usr/src/app
RUN npm config set registry https://registry.npm.taobao.org/ && \
npm i
EXPOSE 3000
#pm2在docker中使用命令为pm2-docker
CMD ["pm2-runtime", "start", "process.yml"]
定制镜像
docker build -t mypm2 .
docker run -p 3000:3000 -d mypm2
启动mongo、mongo-express镜像
安装docker-compose
yum install docker-compose
添加描述文件
// 创建mongo文件夹和docker启动文件
vi mongo/docker-compose.yml
// 服务需要加载几个镜像
version: '3.1'
services:
mongo:
image: mongo
restart: always
ports:
- 27017:27017
mongo-express:
image: mongo-express
restart: always
ports:
- 8000:8081
执行,启动配置中的两个镜像
docker-compose up
查看已启用的镜像
docker-compose ps
停止开启镜像
docker-compose down
访问 ip:8000

使用vscode发布到服务器
打开vscode,下载插件deploy 配置.vscode/settings.josn
{
"deploy": {
"packages": [{
"files": [
"**/*",
],
"exclude": [ // 忽略的文件
"node_modules/**",
".git/**",
".vscode/**",
"**/node_modules/**",
],
"deployOnSave": false,
"interactiveAuth": true,
}],
"targets": [{
"type": "sftp",
"name": "tengxunServer", // name随意写
"dir": "/root/source/docker_ci", // 要发布的服务器地址
"host": "106.54.179.243",
"port": 22,
"user": "root",
"privateKey": "/Users/kaixinliu/.ssh/id_rsa", //本地电脑的私钥
"password": ""// 本地有私钥,可以不配置密码。要不然报错
}],
},
}
下图就是本地私钥没有匹配上密码


docker-compose up
然后报错...


webhock
github项目找到 sitting->Webhooks / Add webhook
github项目的每次操作,都可以想指定的服务器发送一次http请求
未完,待续~~~