#Ignite
ignite:
image: apacheignite/ignite
environment:
- IGNITE_QUITE=false
#volumes:
# - ./project/src/test/resources/ignite.xml:/opt/ignite/apache-ignite-fabric/config/default-config.xml
ports:
- 11211:11211
- 47100:47100
- 47500:47500
- 49112:49112
# Java Shell
java:
image: local/java
build:
context: .
command: /bin/bash
volumes:
- .:/project
depends_on:
- ignite
ports:
- 8000:8000
- 8080:8080
- 1099:1099
<bean id="ignite.cfg"
class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="ipFinder">
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
<property name="addresses">
<list>
<!--
Explicitly specifying address of a local node to let it start and
operate normally even if there is no more nodes in the cluster.
You can also optionally specify an individual port or port range.
-->
<value>127.0.0.1</value>
<!--
IP Address and optional port range of a remote node.
You can also optionally specify an individual port.
-->
<value>127.0.0.1:47500..47509</value>
</list>
</property>
</bean>
</property>
</bean>
</property>
</bean>
@Test
//@Ignore
public void should_run_cluster()
{
try (Ignite ignite = Ignition.start("ignite2.xml"))
{
IgniteCache<Integer, String> cache = ignite.getOrCreateCache("myCacheName");
// Store keys in cache (values will end up on different cache nodes).
for (int i = 0; i < 10; i++)
{
cache.put(i, Integer.toString(i));
}
for (int i = 0; i < 10; i++)
{
System.out.println("Got [key=" + i + ", val=" + cache.get(i) + ']');
}
}
}
我尝试从Java服务公开端口(不同的端口#,不是只公开内部端口,等等),但没有成功。
如果我尝试将配置附加到Ignite服务,它完全不起作用。
我的最终目标是使用Docker-Compose建立一个环境,我可以在本地加入该环境进行测试,但最终将其转移到ECS/Fargate。
ignite:
image: apacheignite/ignite
environment:
- IGNITE_QUIET=false
volumes:
- ./project/src/test/resources/ignite-main.xml:/opt/ignite/apache-ignite-fabric/config/default-config.xml
ports:
- 11211:11211
- 47100:47100
- 47500:47500
- 49112:49112
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="localPort" value="47500"/>
<property name="ipFinder">
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
<property name="addresses">
<list>
<value>localhost</value>
<value>localhost:47500</value>
</list>
</property>
</bean>
</property>
</bean>
</property>
<property name="communicationSpi">
<bean class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi">
<property name="localPort" value="47100"/>
</bean>
</property>
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="localPort" value="47501"/>
<property name="ipFinder">
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
<property name="addresses">
<list>
<value>localhost</value>
<value>localhost:47500</value>
</list>
</property>
</bean>
</property>
</bean>
</property>
<property name="communicationSpi">
<bean class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi">
<property name="localPort" value="47101"/>
</bean>
</property>
私人静电点火;
@BeforeClass
public static void beforeAll()
{
ignite = Ignition.start("ignite.xml");
}
@AfterClass
public static void afterAll()
{
ignite.close();
}
@Test
public void should_prep_cluster()
{
IgniteCache<Integer, String> cache = ignite.getOrCreateCache("myCacheName");
// Store keys in cache (values will end up on different cache nodes).
for (int i = 0; i < 10; i++)
{
cache.put(i, Integer.toString(i));
}
for (int i = 0; i < 10; i++)
{
System.out.println("Got [key=" + i + ", val=" + cache.get(i) + ']');
}
}
作为@Alamar回答的补充:
由于Docker Compose服务在单独容器中启动,您不能使用localhost
或127.0.0.1
来发现服务器节点。您可以链接ignite服务以使用DNS名称ignite
。
组合服务:
# Ignite
ignite:
image: apacheignite/ignite
environment:
- IGNITE_QUIET=false
# volumes:
# - ./project/src/test/resources/ignite.xml:/opt/ignite/apache-ignite-fabric/config/default-config.xml
# It is not necessary to expose ports outside if they are only used inside docker-compose
# ports:
# - 11211:11211
# - 47100:47100
# - 47500:47500
# - 49112:49112
# Java Shell
java:
image: local/java
build:
context: .
command: /bin/bash
volumes:
- .:/project
links:
- ignite
ports:
- 8000:8000
- 8080:8080
- 1099:1099
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="ipFinder">
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
<property name="addresses">
<list>
<value>ignite:47500</value>
</list>
</property>
</bean>
</property>
</bean>
</property>
问题内容: 我在设置中运行官方Redis镜像https://hub.docker.com/_/redis/。 如何在该图像上使用docker-compose 运行? 我尝试了以下操作,但未连接: 图片的文档说我应该运行: 这是什么意思? 问题答案: 那会覆盖默认值:您试图在从未执行过的容器上运行。 如此处所述,您还可以使用以下方法进行测试: 如这个docker / compose问题2123 所述
2017/09/04 15:58:33 server.go:73:使用API v1 2017/09/04 15:58:33 debugger.go:97:使用args启动进程:[/go/src/debug]无法启动进程:fork/exec/go/src/debug:不允许操作
我可以将其更改为正确的容器主机名-->plaintext://kafka:9092,但这样我就无法用其他应用程序再次访问kafka实例了。有什么简单的方法可以解决这个问题吗?
问题内容: 在我的文件中,具有以下内容。但是,容器不会选择主机名值。有任何想法吗? 当我检查容器中的主机名时,它没有启动。 问题答案: 我发现使用时主机名对其他容器不可见。事实证明这是一个已知问题(也许是一个已知功能),其中一部分讨论是: 我们可能应该在文档中添加有关使用主机名的警告。我认为它很少有用。 就容器网络而言,分配主机名的正确方法是定义一个别名,如下所示: 不幸的是,这 仍然 无法使用。
在我的文件中,我有以下内容。但是容器没有选择主机名值。有什么想法吗? 当我检查容器中的主机名时,它不会拾取。
我有我的yaml文件的以下片段。 如何在docker compose文件中为db容器使用的卷定义卷的大小?