docker-compose部署线上项目爬坑记(一)

日期:2021年4月2日 09:32 作者:adminBY 阅读(1918) 评论(0)

最近项目部署上线,使用的是docker-compose的方式。由于刚接触docker-compose所以配置文件或是命令不熟悉导致部署过程中出现各种问题,现在我把docker-compose部署方法和遇到问题一一记下来。

docker-compose安装部署

由于docker-compose是python的一个包文件所以我们可以pip来安装。

安装docker-compose

sudo pip install docker-compose

docker-compose -v

安装完后再打印出docker-compose看是否安装成功

目录结构

└── docker-test  # docker-compose部署根目录
    ├── docker-compose.yml  # 容器配置文件
    ├── Dockerfile          # 自定义容器构建文件
    ├── project             # 项目文件
    |    ├── app.py
    |    └── requirements.txt
    ├── db                  # db挂载目录,挂载到容器
    |   └── my.cnf          # db的配置文件,挂载到容器
    |
    └── nginx               # nginx挂载目录,挂载到容器
        └── conf.d          # nginx服务配置目录,挂载到容器
            └── nginx.conf  # nginx服务配置文件,挂载到容器

docker-compose.yml文件结构详解

yml文件结构

version: "3"
services:

    worker:
      build:
        context: ./
        dockerfile: Dockerfile
      image: example_worker
      container_name: worker_container
      environment:
        MYSQL_PASSWORD:
        MYSQL_HOST:
        MYSQL_NAME:
        MYSQL_USER:
        MYSQL_PORT:
      env_file:
        - ./worker.env
      volumes:
      links:
        - db
      depends_on:
        - db
      networks:
        - backend
        - frontend

    database:
      image: mysql:5.7
      container_name: worker_db
      volumes:
      ports:
        - "3306:3306"
      networks:
        - backend
networks:
  backend:
    driver: bridge
  frontend:
    driver: bridge

*注:如果是要使用构建镜像命令构建自定义镜像build参数必须加上,部署遇到的第一个坑就是文件参数没有使用正确

参数详解

  • version:表示我们的compose文件的版本
  • services:即我们要开始定义服务,每个docker容器为一个服务
  • build:指定该容器构建参数,可以指定包含构建上下文的路径
version: '3'
services:
  webapp:
    build: ./dir

或者作为一个对象传入上下文路径和指定的Dockerfile文件

version: '3'
services:
  webapp:
    build:
      context: ./dir
      dockerfile: Dockerfile-alternate
  • image:指定启动容器的镜像,可以是镜像仓库/标签或者镜像id
image: mysql:5.7
image: tutum/influxdb
image: example-registry.com:4000/postgresql
image: a4bc65fd

如果镜像不存在,Compose将尝试从官方镜像仓库将其pull下来,如果你还指定了build,在这种情况下,它将使用指定的build选项构建它,并使用image指定的名字和标记对其进行标记。

  • container_name:指定一个自定义容器名称
  • environment:设置环境变量
  • links:链接到另一个服务中的容器,可以是服务名称和链接别名
  • volumes:卷挂载路径设置。- ./:/var/www,这里是将当前文件夹挂载到容器的/var/www 目录下
  • ports:暴露端口信息。常用的简单格式:使用宿主:容器
  • restart:no是默认的重启策略,在任何情况下都不会重启容器。 指定为always时,容器总是重新启动。如果退出代码指示出现故障错误,则on-failure将重新启动容器。
restart:"no"
restart:always
restart:on-failure

docker-compose基本命令

基本命令使用

  • docker-compose build:创建一个自定义容器,必须结合build参数使用
  • docker-compose up:该命令十分强大,它将尝试自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作。加上-d参数表示后台启动
  • docker-compose ps:查看当前容器的状态
  • docker-compose stop:停止当前正在运行的容器。下次docker-compose up 默认仍会继续使用之前的容器和数据
  • docker-compose down:关闭并删除当前的容器

以上就是使用docker-compose.yml文件部署的所有知识点,下次更新如果使用Dockerfile文件来创建自定义镜像。


您未登录,请登录注册后评论

0 人参与 | 0 评论
暂时没有评论内容,欢迎来尬聊!