使用 docker 部署 APISIX的详细介绍

二话不说,上个 docker-compose.yml 为敬!

version: "3"
services:
  apisix-dashboard:
    image: apache/apisix-dashboard:2.10.1-alpine
    restart: always
    volumes:
    - ./dashboard_conf/conf.yaml:/usr/local/apisix-dashboard/conf/conf.yaml
    ports:
    - "4000:9000"
    networks:
      apisix:
  apisix:
    image: apache/apisix:2.12.1-alpine
      - ./apisix_log:/usr/local/apisix/logs
      - ./apisix_conf/config.yaml:/usr/local/apisix/conf/config.yaml:ro
    depends_on:
      - etcd
    ##network_mode: host
      - "4080:9080/tcp"
      - "4091:9091/tcp"
      - "4443:9443/tcp"
      - "4092:9092/tcp"
  etcd:
    image: bitnami/etcd:3.4.15
      - etcd_data:/bitnami/etcd
    environment:
      ETCD_ENABLE_V2: "true"
      ALLOW_NONE_AUTHENTICATION: "yes"
      ETCD_ADVERTISE_CLIENT_URLS: "http://0.0.0.0:2379"
      ETCD_LISTEN_CLIENT_URLS: "http://0.0.0.0:2379"
      - "2379:2379/tcp"
networks:
    driver: bridge
volumes:
  etcd_data:

可以修改 apisix-dashboard 的 port 和 apisix 的 port。apisix 容器的 9080 端口对应的就是其内部 OpenRestry 监听的端口,这个要选择好,后面反代的端口就是这个。

etcd 就不用修改什么了,默认就好。

apisix_conf/config.yaml

apisix:
  node_listen: 9080              # APISIX listening port
  enable_ipv6: false

  allow_admin:                  # http://nginx.org/en/docs/http/ngx_http_access_module.html#allow
    - 0.0.0.0/0              # We need to restrict ip access rules for security. 0.0.0.0/0 is for test.
  admin_key:
    - name: "admin"
      key: edd1c9f034335f136f87ad84b625c8f1
      role: admin                 # admin: manage all configuration data
                                  # viewer: only can view configuration data
    - name: "viewer"
      key: 4054f7cf07e344346cd3f287985e76a2
      role: viewer

  enable_control: true
  control:
    ip: "0.0.0.0"
    port: 9092
etcd:
  host:                           # it's possible to define multiple etcd hosts addresses of the same etcd cluster.
    - "http://etcd:2379"     # multiple etcd address
  prefix: "/apisix"               # apisix configurations prefix
  timeout: 30                     # 30 seconds
plugin_attr:
  prometheus:
    export_addr:
      ip: "0.0.0.0"
      port: 9091

这里需要修改 admin_key,座位 AdminAPI 的认证 key

dashboard_conf/conf.yaml

conf:
  listen:
    host: 0.0.0.0     # `manager api` listening ip or host name
    port: 9000          # `manager api` listening port
  allow_list:           # If we don't set any IP list, then any IP access is allowed by default.
    - 0.0.0.0/0
  etcd:
    endpoints:          # supports defining multiple etcd host addresses for an etcd cluster
      - "http://etcd:2379"
                          # yamllint disable rule:comments-indentation
                          # etcd basic auth info
    # username: "root"    # ignore etcd username if not enable etcd auth
    # password: "123456"  # ignore etcd password if not enable etcd auth
    mtls:
      key_file: ""          # Path of your self-signed client side key
      cert_file: ""         # Path of your self-signed client side cert
      ca_file: ""           # Path of your self-signed ca cert, the CA is used to sign callers' certificates
    # prefix: /apisix     # apisix config's prefix in etcd, /apisix by default
  log:
    error_log:
      level: warn       # supports levels, lower to higher: debug, info, warn, error, panic, fatal
      file_path:
        logs/error.log  # supports relative path, absolute path, standard output
                        # such as: logs/error.log, /tmp/logs/error.log, /dev/stdout, /dev/stderr
    access_log:
        logs/access.log  # supports relative path, absolute path, standard output
                         # such as: logs/access.log, /tmp/logs/access.log, /dev/stdout, /dev/stderr
                         # log example: 2020-12-09T16:38:09.039+0800    INFO    filter/logging.go:46    /apisix/admin/routes/r1 {"status": 401, "host": "127.0.0.1:9000", "query": "asdfsafd=adf&a=a", "requestId": "3d50ecb8-758c-46d1-af5b-cd9d1c820156", "latency": 0, "remoteIP": "127.0.0.1", "method": "PUT", "errs": []}
authentication:
  secret:
    secret              # secret for jwt token generation.
                        # NOTE: Highly recommended to modify this value to protect `manager api`.
                        # if it's default value, when `manager api` start, it will generate a random string to replace it.
  expire_time: 3600     # jwt token expire time, in second
  users:                # yamllint enable rule:comments-indentation
    - username: admin   # username and password for login `manager api`
      password: admin
    - username: user
      password: user

plugins:                          # plugin list (sorted in alphabetical order)
  - api-breaker
  - authz-keycloak
  - basic-auth
  - batch-requests
  - consumer-restriction
  - cors
  # - dubbo-proxy
  - echo
  # - error-log-logger
  # - example-plugin
  - fault-injection
  - grpc-transcode
  - hmac-auth
  - http-logger
  - ip-restriction
  - jwt-auth
  - kafka-logger
  - key-auth
  - limit-conn
  - limit-count
  - limit-req
  # - log-rotate
  # - node-status
  - openid-connect
  - prometheus
  - proxy-cache
  - proxy-mirror
  - proxy-rewrite
  - redirect
  - referer-restriction
  - request-id
  - request-validation
  - response-rewrite
  - serverless-post-function
  - serverless-pre-function
  # - skywalking
  - sls-logger
  - syslog
  - tcp-logger
  - udp-logger
  - uri-blocker
  - wolf-rbac
  - zipkin
  - server-info
  - traffic-split

这里需要修改的是 users 中的账号和密码作为登陆的凭证

以上内容都可以在官方的 apisix_docker 仓库中的 example 找到。apisix github

到此这篇关于使用 docker 部署 APISIX的文章就介绍到这了,更多相关docker 部署 APISIX内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 使用 docker 部署 APISIX的详细介绍

    二话不说,上个 docker-compose.yml 为敬! version: "3" services: apisix-dashboard: image: apache/apisix-dashboard:2.10.1-alpine restart: always volumes: - ./dashboard_conf/conf.yaml:/usr/local/apisix-dashboard/conf/conf.yaml ports: - "4000:9000"

  • 基于docker部署Jenkins的详细教程

    0.我做这个文档的时候,大概是19年12月前后,那会er2.200是最新版的. 1.下载镜像 docker pull jenkins/jenkins 一定要安装最新版的 jenkins,旧版本,很多插件无法安装 2.查看jenkins的详细信息 docker inspect jenkins:2.200 3.创建jenkins 目录(做持久化) mkdir /home/jenkins_home 4.启动容器 docker run -d --name Jenkins_01 -p 8081:8080

  • Docker中的镜像详细介绍

    Docker中的镜像详细介绍 Docker镜像可以理解为运行在Docker容器中的一个组件,本节将会带领大家学会Docker镜像的下载.搜索.查看.添加删除等一系列操作.Docker在运行容器前需要本地存在对应的镜像,如果镜像不存在本地,Docker会尝试从默认的远程仓库Docker Hub下载. 一.获取镜像:  1.Docker从网络上下载镜像的格式为: docker pull [NAME]:[TAG] 其中TAG即为标签,如果不指定标签的话,那么默认会下载最新版本的镜像. 比如从Docke

  • 基于docker 部署canvas-lms的详细步骤

    准备: 一台8G内存的服务器.安装好docker, pull一个ubuntu镜像下来, 可以是最新版也可以是官方支持的14/ 16 更新时间: 2018-04-04 Step 1: 启动docker然后加载ubuntu镜像.命令如下: sudo docker run -it ubuntu # -it 是链接输入输出, 后面有一个command参数, 默认为/bin/bash Step 2: 安装vim, sudo (ubuntu镜像可能会非常精简, 没有sudo, 没有vim等文本编辑器) ap

  • Docker部署portainer的详细步骤

    portainer Portainer是Docker的图形化管理工具,由GO语言编写的,提供状态显示.应用模板快速部署.对于Docker(容器.镜像.网络.数据卷)的基本操作.日志显示.容器控制台等功能. 部署 docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock --name portainer portainer/portainer 描述 portainer主要用来管理docker容器,方便了解容器状态

  • Docker 部署RocketMQ的详细操作

    拉取镜像 docker search rocketmq docker pull foxiswho/rocketmq:4.8.0 启动NameServer docker run -d --name rmqnamesrver -e "JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m" -p 9876:9876 foxiswho/rocketmq:4.8.0 sh mqnamesrv 启动Broker 创建挂在目录 mkdir -p /data/docker/r

  • Docker部署SonarQube的详细流程

    目录 前言 简介 安装MySQL 1. 拉取mysql 镜像 2. 创建网络 3. 创建并运行容器 4. 允许外网访问 安装SonarQube 1.拉取镜像 2. 创建工作目录 3.运行容器 4.创建容器并运行 5.打开SonarQube页面 6.安装中文插件 前言 本篇来学习使用docker部署代码检测工具–SonarQube 简介 SonarQube: 是一款开源代码检测工具.本篇介绍通过 docker 来安装.大概的一个运作流程是这样的,先通过 sonar-scanner 插件扫描代码,把

  • windows下Docker部署Flask的详细教程

    Docker默认安装路径是在C盘,Windows中修改Docker**默认安装****路径方法: 1.先创建 D:\Program Files\Docker 目录 2.运行命令,创建链接 mklink /J "C:\Program Files\Docker" "D:\codeSoftware\Docker" 3.点击exe安装完成后,查看版本 docker -v 4.运行docker的hello world docker run hello-world 查看镜像 d

  • Docker 教程之数据管理详细介绍

    Docker 数据管理 用户在使用 Docker 的过程中,往往需要能查看容器内应用产生的数据,或者需要把容器内的数据进行备份,甚至多个容器之间进行数据的共享,这必然涉及容器的数据管理操作.容器中管理数据主要有两种方式:数据卷(Data Volumes),数据卷容器(Data Volume Containers). 数据卷 数据卷是一个可供容器使用的特殊目录,它绕过文件系统,可以提供很多有用的特性: 1.    数据卷可以在容器之间共享和重用. 2.    对数据卷的更改会立即生效. 3.   

  • Docker 多主机网络通信详细介绍

    最近做项目是关于Docker 的网络通信,需要多个主机进行链接通信,这里记录下,以后便于项目开发,大家需要的话也可以看下,少走些弯路. Docker多主机网络通信详解              Docker支持多主机网络通信功能,可以通过命令行建立多主机通信网络.本文使用Docker machine和Consul服务发现工具来讲解这一点. 前提是需要先安装Docker工具箱. 1.Docker Multi-Host Networking 作为一个示例,我们会在VirtualBox虚拟机上使用do

随机推荐