我有一个服务作为全局服务部署到我的 Docker Swarm 集群 (ELK Metricbeat)。
我希望每个服务都有一个与正在运行的节点(主机)的主机名相同的主机名?
换句话说,我如何在 yml 文件中获得相同的结果,例如:
docker run -h `hostname` elastic/metricbeat:5.4.1
Run Code Online (Sandbox Code Playgroud)
这是我的 yml 文件:
metricbeat:
image: elastic/metricbeat:5.4.1
command: metricbeat -e -c /etc/metricbeat/metricbeat.yml -system.hostfs=/hostfs
hostname: '`hostname`'
volumes:
- /proc:/hostfs/proc:ro
- /sys/fs/cgroup:/hostfs/sys/fs/cgroup:ro
- /:/hostfs:ro
- /var/run/docker.sock:/var/run/docker.sock
networks:
- net
user: root
deploy:
mode: global
Run Code Online (Sandbox Code Playgroud)
我努力了:
hostname: '`hostname`'
hostname: '${hostname}'
Run Code Online (Sandbox Code Playgroud)
但没有成功。
有什么解决办法吗?
先感谢您。
我在Symfony2和doctrine中有一个小项目,我正在尝试更新2个相关实体:
会员和汽车
$carMembers = $car->getMembers();
echo count($carMembers); // --> show 2
echo get_class(carMembers[0]); // --> show MyCars\WSBundle\Entity\Member
$car->removeMember($member);
$em->persist($car);
$em->flush();
$carMembers= $car->getMembers();
echo count($carMembers); // --> show 1
echo get_class(carMembers[0]); // --> show MyCars\WSBundle\CarsController !!!
Run Code Online (Sandbox Code Playgroud)
有我的实体:
汽车
/**
* @ORM\ManyToMany(targetEntity="Member", mappedBy="cars")
*/
private $members;
/**
* Remove Member
*
* @param MyCars\WSBundle\Entity\Member $member
*/
public function removeMember(\MyCars\WSBundle\Entity\Member $member)
{
$this->members->removeElement($member);
$member->removeCar($this);
}
Run Code Online (Sandbox Code Playgroud)
会员
/**
* @ORM\ManyToMany(targetEntity="Car", cascade={"persist"})
* @ORM\JoinTable(name="cars_membres",
* joinColumns={@ORM\JoinColumn(name="member_id", referencedColumnName="member_id")},
* inverseJoinColumns={@ORM\JoinColumn(name="car_id", referencedColumnName="car_id")}
* )
*/
private $cars;
Run Code Online (Sandbox Code Playgroud)