Docker-compose

由于apt官方库里的docker版本可能比较旧,所以先卸载可能存在的旧版本:
$ sudo apt-get remove docker docker-engine docker-ce docker.io

更新apt包索引:
$ sudo apt-get update

安装以下包以使apt可以通过HTTPS使用存储库(repository):
$ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

添加Docker官方的GPG密钥:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

使用下面的命令来设置stable存储库:
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

再更新一下apt包索引:
$ sudo apt-get update


在生产系统上,可能会需要应该安装一个特定版本的Docker CE,而不是总是使用最新版本:
列出可用的版本:
$ apt-cache madison docker-ce
选择要安装的特定版本,第二列是版本字符串,第三列是存储库名称,它指示包来自哪个存储库,以及扩展它的稳定性级别。要安装一个特定的版本,将版本字符串附加到包名中,并通过等号(=)分隔它们

安装最新版本的Docker CE:
$ sudo apt-get install -y docker-ce=<VERSION>
$ sudo apt-get install -y docker-ce=18.06.3~ce~3-0~ubuntu

验证docker
查看docker服务是否启动:
$ systemctl status docker
若未启动,则启动docker服务:
$ sudo systemctl start docker
经典的hello world:
$ sudo docker run hello-world
列出所有镜像 
$ docker images

Docker推荐的理念是,一个容器运行一个服务进程,docker-compose是Docker提供的用于管理多个Docekr容器的工具
1.下载docker-compose命令文件
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2.为docker-compose命令文件赋予可执行权限
$ sudo chmod +x /usr/local/bin/docker-compose
3.测试安装是否正确
docker-compose  --version

准备Nginx配置文件
从镜像当中复制一个默认的再根据自己的需要修改
docker run --name tmp-nginx-container -d nginx
docker cp tmp-nginx-container:/etc/nginx/nginx.conf /home
准备Mysql配置文件
docker run --name tmp-mysql-container -d mysql:5.7.24
sudo docker cp tmp-mysql-container:/etc/mysql/my.cnf ./mysql/conf/my.conf
sudo docker rm -f tmp-mysql-container

规划目录

.
├── docker-compose.yml
├── log
│   ├── gunicorn.log
│   └── nginx
│       ├── access.log
│       └── error.log
├── mysql_master
│   ├── data
│   └── my.cnf
├── mysql_slave
│   ├── data
│   └── my.cnf
├── nginx
│   ├── conf
│   │   └── nginx.conf
│   └── logs
├── Pinshop
│   ├── app.py
│   ├── Apps
│   │   ├── __init__.py
│   │   ├── Product
│   │   │   ├── __init__.py
│   │   │   ├── model.py
│   │   │   ├── __pycache__
│   │   │   │   ├── __init__.cpython-36.pyc
│   │   │   │   └── model.cpython-36.pyc
│   │   │   └── views
│   │   │       ├── __pycache__
│   │   │       │   └── test.cpython-36.pyc
│   │   │       └── test.py
│   │   └── __pycache__
│   │       └── __init__.cpython-36.pyc
│   ├── config.py
│   ├── Dockerfile
│   ├── guni_conf.py
│   ├── manage.py


yml文件修改

version: '3'
services:
  mysql-master:
    image: mysql:5.7.24
    ports:
     - "3306:3306"
    volumes:
      - "./mysql_master/data:/var/lib/mysql"
      - "./mysql_master/my.cnf:/etc/mysql/my.cnf"
      - "./log:/var/log"
    environment:
      - MYSQL_ROOT_PASSWORD=1
    networks:
      app_net:
        ipv4_address: 10.10.10.1
    container_name: "compose-mysql-master"
  mysql-slave:
    image: mysql:5.7.24
    ports:
     - "3307:3307"
    volumes:
      - "./mysql_slave/data:/var/lib/mysql"
      - "./mysql_slave/my.cnf:/etc/mysql/my.cnf"
      - "./log:/var/log"
    environment:
      - MYSQL_ROOT_PASSWORD=1
    networks:
      app_net:
        ipv4_address: 10.10.10.2
    container_name: "compose-mysql-slave"
  nginx:
    image: nginx:latest
    ports:
      - "80:80"
#    depends_on:
#      - "flask"
    volumes:
      - "./nginx/conf/nginx.conf:/etc/nginx/nginx.conf"
      - "./log:/var/log"
    networks:
      - app_net
    container_name: "compose-nginx"
  flask:
    build: ./Pinshop
    image: pin-flask
    ports:
      - "8000:8000"
#    depends_on:
#      - mysql-master
#      - mysql-slave
    volumes:
      - "./Pinshop:/code"
      - "./log:/var/log"
    networks:
      - app_net
    container_name: "compose-flask"

networks:
  app_net:
    driver: bridge
    ipam:
      config:
      - subnet: 10.10.0.0/16


vim /etc/hosts修改增加虚拟主机
在目录下输入
docker-compose up -d  每个app build再run
docker-compose up -d nginx  单独启动一个service,可以是文件中新增的
docker-compose logs nginx  查看服务启动失败的日志
docker-compose ps 列出当前运行的服务状态和相关信息
docker-compose down 关闭所有容器并删除,保留默认数据
docker exec -it  compose-flask /bin/bash  进入容器exit退出
docker-compose build flask;先stop,再重建
坑点:
只能用相对路径,绝对路径在COPY时候不生效


#可能有用的资料
但是每次有语法错误,容器会报错退出。修改完,还得在控制台按“↑”和“enter”重新执行一次docker-compose up。
这是flask的原因:flask自带的reload只能在语法没毛病的情况下,如果有错就会报错退出,因为容器执行的是python3 main.py,这个退了,容器就会stop。
为了解决这个问题,可以用flask-failsafe插件。然后就完美啦。语法错误也会reload了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值