Skip to content

Commit e2983c8

Browse files
author
Zhen Li
committed
Run docker under current user
1 parent f815eaa commit e2983c8

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

boltkit/__main__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,8 @@ def handle_input(value, neo4j):
269269
"Both of the folder paths should be absolute paths. "
270270
"When starting a cluster, sub-folders for each cluster are expected. "
271271
"Otherwise new sub-folders will be auto-created inside the given host folder.")
272+
@click.option("--user", type=int,
273+
help="Specify the user to run Neo4j docker container.")
272274
@click.option("--env", multiple=True,
273275
help="Extra environment variables to the neo4j docker container. "
274276
"Use this to pass customized configurations to neo4j. "

boltkit/server/__init__.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@
4444
"dbms.memory.heap.initial_size": "300m",
4545
"dbms.memory.heap.max_size": "500m",
4646
"dbms.transaction.bookmark_ready_timeout": "5s",
47-
"dbms.backup.enabled": "false"}
47+
"dbms.backup.enabled": "false",
48+
"dbms.connectors.default_listen_address": "::",
49+
}
4850

4951
DEFAULT_WAIT_TIMEOUT = 120 # 2 mins
5052

@@ -59,7 +61,7 @@ class Neo4jMachine:
5961

6062
ready = 0
6163

62-
def __init__(self, name, service_name, image, auth, bolt_port, http_port, volume, env, **config):
64+
def __init__(self, name, service_name, image, auth, bolt_port, http_port, volume, env, user, **config):
6365
self.name = name
6466
self.service_name = service_name
6567
self.fq_name = "{}.{}".format(self.name, self.service_name)
@@ -93,6 +95,7 @@ def __init__(self, name, service_name, image, auth, bolt_port, http_port, volume
9395
source, target = s.split(":")
9496
volumes[source] = {'bind': target, 'mode': 'rw'}
9597

98+
9699
def create_container(img):
97100
return self.docker.containers.create(img,
98101
detach=True,
@@ -101,7 +104,8 @@ def create_container(img):
101104
name=self.fq_name,
102105
network=self.service_name,
103106
ports=ports,
104-
volumes=volumes)
107+
volumes=volumes,
108+
user=user)
105109

106110
try:
107111
self.container = create_container(self.image)
@@ -340,7 +344,7 @@ def find_and_stop(cls, service_name):
340344
class Neo4jStandaloneService(Neo4jService):
341345
default_image = "neo4j:latest"
342346

343-
def __init__(self, name=None, bolt_port=None, http_port=None, volume=None, env=None, **parameters):
347+
def __init__(self, name=None, bolt_port=None, http_port=None, volume=None, env=None, user=None, **parameters):
344348
super().__init__(name, **parameters)
345349
machine = Neo4jMachine(
346350
"z",
@@ -351,6 +355,7 @@ def __init__(self, name=None, bolt_port=None, http_port=None, volume=None, env=N
351355
http_port=http_port or self.default_http_port,
352356
volume=volume or {},
353357
env=env or {},
358+
user=user,
354359
)
355360
self.routers[machine.fq_name] = machine
356361
self.machines.append(machine)
@@ -375,7 +380,7 @@ def _port_range(cls, base_port, count):
375380
return range(base_port, base_port + count)
376381

377382
def __init__(self, name=None, bolt_port=None, http_port=None, n_cores=None, n_replicas=None, volume=None, env=None,
378-
**parameters):
383+
user=None, **parameters):
379384
super().__init__(name, n_cores=n_cores, n_replicas=n_replicas, **parameters)
380385
if not "enterprise" in self.image:
381386
raise ValueError("Enterprise neo4j docker image is required for cluster")
@@ -411,6 +416,7 @@ def __init__(self, name=None, bolt_port=None, http_port=None, n_cores=None, n_re
411416
http_port=core_http_port_range[i],
412417
volume=["{}:{}".format(path.join(s.split(":")[0], core_names[i]), s.split(":")[1]) for s in volume],
413418
env=env,
419+
user=user,
414420
**{
415421
"causal_clustering.initial_discovery_members": ",".join(core_addresses),
416422
"causal_clustering.minimum_core_cluster_size_at_formation": self.n_cores,
@@ -441,6 +447,7 @@ def __init__(self, name=None, bolt_port=None, http_port=None, n_cores=None, n_re
441447
http_port=replica_http_port_range[i],
442448
volume=["{}:{}".format(path.join(s.split(":")[0], replica_names[i]), s.split(":")[1]) for s in volume],
443449
env=env,
450+
user=user,
444451
**{
445452
"causal_clustering.initial_discovery_members": ",".join(core_addresses),
446453
"dbms.connector.bolt.advertised_address": "localhost:{}".format(replica_bolt_port_range[i]),

0 commit comments

Comments
 (0)