在WP网站中使用Jenkins API-拒绝访问

时间:2019-05-21 12:04:18

标签: wordpress apache docker jenkins

我正在尝试通过开发自定义插件在我的WordPress网站中使用Jenkins API。关于我的安装,我使用Docker映像:WordPress,Apache,PHP,Jenkins。 问题是我无法从WP网站访问我的Jenkins API,而且仍然遇到“访问被拒绝”错误。

对于我的Docker安装,我位于公司代理http://proxy:8080的后面,并且设置了本地Docker网络 所以这里是我的docker-compose.yml

version: '2'
services:
  web:
    build: 
      context: './docker/'
      dockerfile: './httpd/Dockerfile'
    depends_on:
      - db
      - php
    ports:
      - "80:80"
    networks:
      test4exoplatform_local-network:
        ipv4_address: 199.20.0.6
    volumes:
      - ./html/:/var/www/html/
    container_name: web

  db:
    build: 
      context: './docker/db/'
    ports: 
      - "3306:80"
    networks:
      test4exoplatform_local-network:
        ipv4_address: 199.20.0.9
    volumes:
       - ./db_data:/var/lib/mysql
    restart: always
    container_name: db

 wordpress:
    build:
      context: './docker/wordpress/'
    environment:
      WP_PROXY_HOST: http://proxy
      WP_PROXY_PORT: 8080
    ports:
      - "3362:80"
    links:
      - db
    volumes:
      - ./wp-content:/var/www/html/html/pages/wp-content
      - ./wp-config.php:/var/www/html/html/pages/wp-config.php
    networks:
      test4exoplatform_local-network:
        ipv4_address: 199.20.0.5
    container_name: wordpress

  php:
    build: 
      context: './docker/php/'
    ports:
      - "9999:80"
    networks:
      test4exoplatform_local-network:
        ipv4_address: 199.20.0.4
    volumes:
      - ./:/var/www/html/
    container_name: php

  jenkins:
    build:
      context: './docker/jenkins/'
    user: root
    ports:
      - "9091:8080"
    networks:
      test4exoplatform_local-network:
        ipv4_address: 199.20.0.7
    container_name: jenkins
    volumes:
      - /tmp/jenkins:/var/jenkins_home

networks:
  test4exoplatform_local-network:
    external: true

在我的WordPress映像中,我可以(通过telnet jenkins 8080访问Jenkins映像。

在詹金斯,我还设置了代理设置。

在我的WP插件中找到我的代码,以访问Jenkins API:

$username = 'username';
$api_token = 'token';
$url = 'http://localhost:9091';
$jobName = 'test';

ch = curl_init();    

curl_setopt($ch, CURLOPT_PROXY, "proxy:8080");
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false ); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false ); 
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $api_token); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_URL, $url . '/job/' . $jobName . '/build?token=' . $api_token);
$result = executeCurl($ch);
var_dump($result);

它引发了我这个错误,我真的不知道该如何继续:

The following error was encountered while trying to retrieve the URL: http://localhost:9091/job/test/build?...

    Access Denied.

令牌和用户名正确,因为当我在浏览器中输入链接(http://localhost:9091/job/test/build?token=token)时,它确实起作用并启动了jenkins构建。

我也尝试使用设置给我的詹金斯码头工人镜像(199.20.0.7)的IP地址来访问API(如199.20.0.7/job/test/build?token=token),但出现了错误:{ {1}}

这可能是网络错误吗?

编辑

好的,我进行了一些修改,可能会有所帮助,我获得了有关错误的更多信息,但仍然不了解它。 因此,我删除了The requested URL could not be retrieved文件中指定的地址ip(因为我认为它阻止了我的请求)。 现在,当我尝试通过我的WP网站启动jenkins构建时,php日志抛出了我:

docker-compose.yml

我不明白,是我的代理出于某种原因阻止了我的请求?

0 个答案:

没有答案