一、docker-compose的安装
官网参考: https://docs.docker.com/compose/
1、安装docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose #赋予可执行权限
2、安装完成后,docker-compose常用命令
docker-compose version
docker-compose up (创建并启动所有容器)
docker-compose up -d (后台启动)
docker-compose ps (查看服务进程)
docker-compose logs [SERVER_NAME]
docker-compose stop (停止所有服务)
docker-compose down (停止所有服务,并删除所有的容器、镜像、网络)
docker-compose down --valumes (停止所有服务,并删除所有容器、镜像、网络、卷)
docker-compose stop SERVICE_NAME (停止某个服务)
docker-compose start SERVICE_NAME (启动某个服务,它所depends_on的服务也会启动)
docker-compose run SERVICE_NAME COMMAND (在某个服务容器中执行一次性的命令)
二、入门案例nodejs+redis(docker官网中的例子是python+redis)
实现一个用户访问次数计数的功能:
redis作为后端存储,对于用户的每次返回使用incr自增1
nodejs作为前端web服务器,当用户每次访问nodejs的首页时,nodejs会调用后端redis api的incr自增1
为此,我们需要一个可以运行nodejs的主机和一个可以运行redis主机,我们分别拉取它们的docker镜像。
docker pull node:10-alpine
docker pull redis:4-alpine
mkdir -p composetest/myapp
cd composetest/myapp
vi app.js ,内容如下:
const redis = require('redis'); const client = redis.createClient( 6379, 'redis'); var http=require('http'); var app=http.createServer(function(req,res){ res.writeHead(200,{'content-type':'text/html;charset=utf-8'}) if(req.url!="/favicon.ico"){ client.incr('count',function(err,data){ console.log(data); res.end(`这是你第{data}次访问`); }); } }); console.log('http server listen on 3000'); app.listen(3000);
在myapp目录中运行 node init 初始化一个node项目,再node install redis --save 将redis的nodejs模块安装到项目本地。
cd ..
vi myapp.dockerfile ,内容如下:
FROM node:10-alpine ADD myapp myapp EXPOSE 3000 CMD node /myapp/app.jsvi docker-compose.yml ,内容如下:
version: '3' services: myapp: build: context: . dockerfile: myapp.dockerfile ports: - "3000:3000" depends_on: - redis redis: image: "redis:4-alpine"最后,启动所有服务
docker-componse up
停止所有服务:
docker-compose stop (停止容器 ) 或者
docker-compose down (停止容器,删除容器、网络)
Copyright © 叮叮声的奶酪 版权所有
备案号:鄂ICP备17018671号-1