相关文章推荐
坚强的铁板烧  ·  python-Coverage ...·  1 年前    · 
逼格高的西瓜  ·  SQL SERVER动态列名 - ...·  1 年前    · 
帅气的玉米  ·  Qt激活窗口 - 知乎·  1 年前    · 

使用my-docker镜像启动一个容器

docker run -d -p 8888:8888 my-docker:1.0

不使用compose,需要单独启动三个容器,执行三遍docker run

使用 compose 部署项目

编写docker-compose.yml文件,并上传到服务器的/mydocker 路径下

version: "3"
# 多个服务
services:
  # my-docker服务
  myDockerService:
    # 镜像名称和版本
    image: my-docker:1.0
    # 启动的容器名称
    container_name: my-docker
    ports:
      - 8888:8888
    # 容器数据卷
    volumes:
      - /app/myDocker:/data
    # 网络模式 (最下方自定义的一个网络模式)
    networks:
      - my_net
    # 依赖的服务(表示需要依赖的服务先启动)
    depends_on:
      - redis
      - mysql
  # redis 服务
  redis:
    image: redis
    ports:
      - 6666:6379
    volumes:
      - /app/redis/redis.conf:/etc/redis/redis.conf
      - /app/redis/data:/data
    networks:
      - my_net
    # 启动命令
    command: redis-server /etc/redis/redis.conf
  # mysql服务
  mysql:
    image: mysql:5.7
    # mysql 相关配置
    environment:
      MYSQL_ROOT_PASSWORD: '123456'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
      MYSQL_DATABASE: 'testdb'
      MYSQL_USER: 'vhukze'
      MYSQL_PASSWORD: 'vhukze'
    ports:
      - 3306:3306
    volumes:
      - /app/mysql/db:/var/lib/mysql
      - /app/mysql/conf/my.cnf:/etc/my.cnf
      - /app/mysql/init:/docker-entrypoint-initdb.d
    networks:
      - my_net
    # 解决外部无法访问问题
    command: --default-authentication-plugin=mysql_native_password
# 创建自定义网络模式
networks:
  my_net: 

使用同一个自定义网络模式,互相之间可以通过服务名称访问,修改项目配置文件,把redis和mysql的ip改为服务名称 (注意这里redis的端口要改成容器内使用的端口,因为是容器之间互相访问,不会走宿主机的端口)

再次打包项目上传到服务器,使用Dockerfile构建镜像

在docker-compose.yml所在目录执行下面命令,检查语法是否有误

执行之后没有任何输出,表示语法没有问题

docker compose config -q

使用docker-compose启动三个容器

在docker-compose.yml所在目录执行下面命令

docker compose up -d

可以看到网络模式和三个容器都创建完成了

使用浏览器访问my-docker项目的接口,访问成功

一键停止并删除

docker compose down
docker compose stop
docker compose start
docker compose restart

结论是 通过docker-compose可以一键创建和删除多个容器

docker-compose 文件volumes中挂载的目录当宿主机不存在时,会自动创建 vi docker-compose .ymlversion: "2" # 使用 Version 2services: # 包含需要操作的 容器 web1: # 容器 的名称image: nginx # 指定基于哪个镜像ports: # 指定映射的端口 "8080:80"networks: # 指定 使用 哪...
考虑到要将生产环境和开发环境保持一致,我决定 使用 docker 方式 部署 我得开发。最终的效果当然是支持自动化 部署 并且能够保持开发端的环境和运行 服务 器端保持高度一致; 我得运营 服务 器是阿里云,为了方便以后参考,我决定把阿里云 服务 器重装系统,重新来过; 安装 Docker 安装前最好先确认下你的Centos是否支持安装 docker ,因为 Docker 要求 CentOS 系统的内核版本高于 3.10; $ uname -r 更新系统到最新(可选) $ sudo yum update 卸载旧版本(如果以前
Docker com pose 用来对 容器 进行编排, 使用 它可以快速定义、启动一组相关的 容器 信息。 Docker com pose 的工作目录被称作 一个 工程,在 一个 工程对应 多个 服务 ,每个 服务 由它所需运行的 容器 组成。它有一yml个配置文件,在这个配置文件里定义了 容器 的编排信息,通过co pose 可以 一键 启动所有相关的 容器 使用 com pose 部署 一个 springboot 服务 和redis 服务 ,springboot中有 一个 helloword接口,该接口访问redis,返回helloword。 服务 信息如下: packa
目前项目涉及到的基础设施有mysql, nginx, redis, 服务 模块有两个 python/fastapi 和 golang/gin。 如果本地 部署 的话需要配置的环境有点多,虚拟化(以 docker 容器 形式)是目前(最)流行的 部署 方法。加上众多编排工具可选择,非常适合Frodo目前多 服务 的形式。本文先介绍项目的 docker 部署 方法,再以此为例,谈谈 docker-compose 编排多 服务 应用的特点和需要注意的地方。希望本文对大家开始实践 部署 服务 容器 编排应用能有启发~ 项目地址: python/fas.