zoukankan      html  css  js  c++  java
  • DockerCompose

    需求:访问user-service,user-service需要启动nacos服务,mysql服务 

    项目地址:

    链接:https://pan.baidu.com/s/1Kx33bT_ngkoi731QE4gkPQ
    提取码:25f5

    Nacos服务

    https://hub.docker.com/

    MySQL服务

    docker run \
     --name mysql \
     -e MYSQL_ROOT_PASSWORD=root \
     -p 3306:3306 \
     -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
     -v /tmp/mysql/data:/var/lib/mysql \
     -d \
     mysql:5.7.25

    数据库Sql语句

    user-service服务

    配置MySQL

    配置nacos

    上传user-service的jar

    新建cloud-demo目录

    mkdir cloud-demo

    进入新建cloud-demo目录,上传user-service.jar

    通过Dockerfile构建镜像

    FROM java:8-alpine
    COPY ./user-service.jar /tmp/app.jar
    ENTRYPOINT java -jar /tmp/app.jar

    上传Dockerfile

    docker build -t userservice:1.0 .

    镜像构建成功

    运行镜像,创建容器

    docker run -p 80:8081 -d userservice:1.0 . 

    无法访问:查看服务器端口

    查询已开放的端口 netstat  -ntulp | grep 端口号:可以具体查看某一个端口号

    查询指定端口是否已开 firewall-cmd --query-port=端口号/tcp
               提示 yes,表示开启;no表示未开启。

    添加指定需要开放的端口:firewall-cmd --add-port=端口号/tcp --permanent

    重载入添加的端口:firewall-cmd --reload

    移除指定端口:firewall-cmd --permanent --remove-port=端口号/tcp

    DockerCompose

    Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器!

    Compose文件是配置文件,通过配置来运行多个镜像(Docker Registry 镜像服务器中的镜像拉取和运行、自定义构建镜像运行)

    通过Compose文件启动nacos、mysql、userservice服务

    version: "3.9"
    
    services:
      nacos:                        
        image: nacos/nacos-server
        environment:
          MODE: standalone
        ports:
          - "8848:8848"
      mysql:
        image: mysql:5.7.25
        environment:
          MYSQL_ROOT_PASSWORD: root
        volumes:
          - "$PWD/mysql/data:/var/lib/mysql"
          - "$PWD/mysql/conf:/etc/mysql/conf.d/"
      userservice:
        build: ./user-service

    默认都是后台运行

    DockerCompose的详细语法参考官网:https://docs.docker.com/compose/compose-file/

    CentOS7安装DockerCompose

    下载

    Linux下需要通过命令下载

    # 安装
    curl -L https://github.com/docker/compose/releases/download/1.29.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

    Linux 版本的 Compose,下载地址:https://github.com/docker/compose/releases

    若是github访问太慢,可以用daocloud下载

    sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

    修改文件权限

    # 修改权限
    chmod +x /usr/local/bin/docker-compose

    Base自动补全命令

    # 补全命令
    curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

    如果这里出现错误,需要修改自己的hosts文件

    echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts

    案件:通过Compose将user-service、feign-order-service、gateway服务构建发布

    创建文件夹docker-compose-demo

    存放将要发布服务工程和docker-compose.yml

    发布服务工程

    Ⅰ、编写Dockerfile(构建镜像的层)

    FROM java:8-alpine
    COPY ./app.jar /tmp/app.jar
    ENTRYPOINT java -jar /tmp/app.jar

    Ⅱ、编写docker-compose.yml

    version: "3.2" 
    
    services:
      nacos:
        image: nacos/nacos-server
        environment:
          MODE: standalone
        ports:
          - "8848:8848"
      mysql:
        image: mysql:5.7.25
        environment:
          MYSQL_ROOT_PASSWORD: root
        volumes:
          - "$PWD/mysql/data:/var/lib/mysql"
          - "$PWD/mysql/conf:/etc/mysql/conf.d/"
      userservice:
        build: ./user-service
      orderservice:
        build: ./feign-order-service
      gateway:
        build: ./gateway
        ports:
          - "10018:10018"

    在使用compose快速构建发布服务时,服务之间互相调用地址为compose配置文件中配置的服务名

    Ⅲ、将数据库、nacos地址都命名为docker-compose中的服务名

    Ⅳ、使用maven打包工具,将项目中的每个微服务都打包为app.jar,将打包好的app.jar拷贝到docker-compose-demo中的每一个对应的子目录中

    Ⅴ、将docker-compose-demo上传至虚拟机,利用 docker-compose up -d 来部署

    如果出现错误:docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))

    可以能原因:docker没有启动,通过systemctl status docker命令查看docker状态,systemctl start docker启动docker

    Ⅶ、查看容器

    Ⅷ、浏览器查看

    可能无法正常访问原因是nacos启动时,userservice、gateway、feignorderservice服务还没启动,就无法注册到nacos注册中心,可以重启userservice、gateway、feignorderservice服务容器

    docker restart 46a5e1e89390

    开放端口:

    firewall-cmd --query-port=8848/tcp
    firewall-cmd --add-port=8848/tcp --permanent
    firewall-cmd --reload

    401错误,身份验证失败,gateway中做的身份验证

  • 相关阅读:
    SQL Server误区30日谈Day15CheckPoint只会将已提交的事务写入磁盘
    SQL Server误区30日谈Day16数据的损坏和修复
    【译】Windows Azure迁移生命周期概览
    【译】实现为Windows Azure制定的迁移计划
    SQL Server误区30日谈Day18有关FileStream的存储,垃圾回收以及其它
    【译】为迁移到Windows Azure制定规划
    SQL Server误区30日谈Day14清除日志后会将相关的LSN填零初始化
    SQL PASS北京用户群成功举办第一次线下活动,性能调优PPT分享
    Windows Azure虚拟机概览
    SQL Pass北京将举办第一次线下活动,欢迎大家报名
  • 原文地址:https://www.cnblogs.com/WarBlog/p/15459120.html
Copyright © 2011-2022 走看看