问题描述
我在这里面临一个相对简单的问题,但我开始怀疑为什么它不起作用。
我想用Docker Compose启动两个Docker容器:InfluxDB和Chronograph。
不幸的是,计时码表无法以给定的主机名到达InfluxDB:“无法连接到InfluxDB Influx 1:错误地联系了来源”
这可能是什么原因?
这是我的 docker-compose.yml :
add_action( 'wp_enqueue_scripts','my_scripts' );
我还尝试在两个容器中启动一个shell,然后将这些容器彼此ping或使用wget获取另一个容器的HTTP-API。即使容器之间的这种通信也不起作用。在尝试wget和ping的过程中,我都超时了。
必须说,我在这里使用Banana Pi BPI-M1。是否有可能由于Linux而导致容器到容器的通信不起作用?
解决方法
如果未配置,chronograf将尝试访问localhost:8086
上的influxdb。为了能够访问正确的influxdb实例,您需要使用--influxdb-url
命令行标志或(个人喜好)环境变量INFLUXDB_URL
来相应地指定url。应当将这些值设置为http://influxdb:8086
的值,该值是从您的撰写文件的服务名称(位于services
下一层的键)派生的docker DNS名称。
这应该可以解决问题(摘要):
chronograf:
image: chronograf
restart: unless-stopped
ports:
- 8888:8888
volumes:
- chronograf-volume:/var/lib/chronograf
environment:
- INFLUXDB_URL=http://influxdb:8086
depends_on:
- influxdb
networks:
- test
请检查chronograf readme(使用带有InfluxDB的容器部分)以获取有关配置映像的详细信息,并检查the docker compose networking docs有关网络和dns命名的更多信息。 / p>
,Docker服务在表filter和nat中创建一些iptables条目。我的OpenVPN Gateway脚本在启动时执行了以下命令:
if($projectTaskIds && count($projectTaskIds)){
$realTime = 0;
$estimateCost = 0;
$itemName = '';
$realCost = 0;
$realCostArr = array();
$totalCalEArr = array();
foreach ($projectTaskIds as $key => $projectTaskId) {
// echo $projectTaskId['id'];
// echo "<br>";
$calB = 0;
$calC = 0;
$itemtotal = 0;
$items = get_items_by_type('task',$projectTaskId['id']);
if($items && count($items) > 0){
$itemNo = 1;
foreach ($items as $key => $item) {
$itemtotal += ($item["rate"]*$item["qty"]);
$itemName .= '<div>'.$itemNo.'.'.$item["description"].' <b>('.round($item["qty"]).')</b>'.'</div>';
$itemNo++;
}
}
// =============== the code that doesn't work ============
$calF = get_task_user_hourly_rate($assignees_id[0]); // hourly_rate
$calG = get_task_custom_billable_amount($aRow['id']);
if($aRow['task_item_percentage']){
$calE = ((round($itemtotal + ((($calF * $aRow['task_duration'] / 60))))*($aRow['task_item_percentage']/100)))+(round($itemtotal + (($calF * $aRow['task_duration'] / 60)))); // additionalPriceTotal
}
else {
$calE = ($itemtotal+$aRow['task_item_manual_total_price']-$itemtotal);
}
$totalCalE = $calE;
$totalCalEArr[] = $totalCalE;
if($totalCalEArr && count($totalCalEArr) > 0){
$totalsCalEaMount = 0;
foreach ($totalCalEArr as $key => $totalvalue) {
$totalsCalEaMount += $totalvalue;
}
}
// =============== the code that doesnt work ============
$realTime += get_calc_task_real_logged_time($projectTaskId['id']);
$calB = get_task_custom_billable_amount($projectTaskId['id']);
if($aRow['task_item_percentage']){
$calC = ((round($itemtotal + ((($calF * $aRow['task_duration'] / 60))))*($aRow['task_item_percentage']/100)))+(round($itemtotal + (($calF * $aRow['task_duration'] / 60)))); // additionalPriceTotal
} else {
$calC = ($itemtotal+$aRow['task_item_manual_total_price']-$itemtotal);
}
$estimateCost += round($itemtotal+($calA * $aRow['task_duration'] / 60));
$realCost = round($itemtotal+$calB);
// if($calC = 0){ $realCost = round($itemtotal+$calB);} else { $realCost = round($itemtotal+$calB+$calC);
// }
$realCostArr[] = $realCost;
}
if($realCostArr && count($realCostArr) > 0){
$realCostAmount = 0;
foreach ($realCostArr as $key => $reslcostvalue) {
$realCostAmount += $reslcostvalue;
}
}
}
$outputName = '';
$relName = '';
$row[] = $loop;
if ($aRow['rel_name']) {
$relName = task_rel_name($aRow['rel_name'],$aRow['rel_id'],$aRow['rel_type']);
$link = task_rel_link($aRow['rel_id'],$aRow['rel_type']);
$relName = '<span class="hide"> - </span><a class="text-muted task-table-related" data-toggle="tooltip" title="' . _l('task_related_to') . '" href="' . $link . '">' . $relName . '</a>';
}
$row[] = $relName;
$row[] = count($projectTaskIds);
$row[] = $itemName;
$row[] = $aRow['task_duration']*count($projectTaskIds);
$row[] = round($realTime/60);
$row[] = round($estimateCost);
$row[] = round($realCostAmount);
$row[] = '';
$row[] = $totalCalEArr; // display as array or $row[] = $totalsCalEaMount; to display as a sum
$output['aaData'][] = $row;
$loop++;
}
这将从Docker中删除条目,并且容器与Internet之间的通信将不再可能。
我已经重写了脚本,现在一切又可以正常工作了。