Sun*_*kya 8 amazon-web-services amazon-ecs aws-fargate
我们正在从ECS迁移到Fargate。在ECS中,我们可以在任务定义中设置主机名,如下所示:
“ hostname”:“%HOST_NAME%”
它无法创建,并显示错误“当networkMode = awsvpc时容器上不支持主机名”是否可以设置主机名?
尽管文档明确表明不支持此操作,但有一个解决方法。您可以创建 bootstrap_ecs.sh 文件并覆盖容器 ENTRYPOINT 以在运行时引用该文件(或者将以下内容添加到您自己的引导脚本中)。从 ECS 运行时可以使用它。否则,请使用标准 ENTRYPOINT 和 COMMAND。
bootstrap_ecs.sh
#!/bin/bash
ifconfig # prints full IP info
echo "Detecting 'eth1' interface..."
DETECTED_IP=$(ifconfig -a | grep -A2 eth1 | grep inet | awk '{print $2}' | sed 's#/.*##g' | grep "\.")
if [[ -z $DETECTED_IP ]]; then
echo "Detecting 'eth0' interface ('eth1' not found)..."
DETECTED_IP=$(ifconfig -a | grep -A2 eth0 | grep inet | awk '{print $2}' | sed 's#/.*##g' | grep "\." | head -1)
fi
DETECTED_HOSTNAME=$(hostname)
echo -e "\n\nDETECTED_IP=$DETECTED_IP\nDETECTED_HOSTNAME=$DETECTED_HOSTNAME\n\n"
# Note: newer OS versions us `ip` instead of `ifconfig`
# Echo for debugging. You can comment/delete the 1st and 3rd lines once everything is working.
echo -e "Current file contents:\n $(cat /etc/hosts)"
echo "$DETECTED_IP $DETECTED_HOSTNAME" >> /etc/hosts
echo -e "\n\n\nUpdated file contents:\n $(cat /etc/hosts)"
CMD="$@"
$CMD
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2090 次 |
| 最近记录: |