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中做的身份验证

  • 相关阅读:
    mysql数据向Redis快速导入
    jquery.cookie.js使用
    怎么才能在职场中如鱼得水(转)
    内部类(编程思想)
    main方法原来只要放在public static类中就能跑,涨知识了
    匿名内部类--工厂
    Java通过继承外部类来建立该外部类的protected内部类的实例(转)
    监听器的使用例子 ServletContextListener
    Class.getResource()方法的使用
    maven打包资源文件(转)
  • 原文地址:https://www.cnblogs.com/WarBlog/p/15459120.html
Copyright © 2011-2022 走看看