ERROR: for pelias_elasticsearch 'ContainerConfig'
I'm getting a step closer to make the sample work
I get the error ERROR: for pelias_elasticsearch 'ContainerConfig' :
raphy@WorldMap:~/pelias/docker/projects/portland-metro$ echo 'DATA_DIR=./data' >> .env
raphy@WorldMap:~/pelias/docker/projects/portland-metro$ pelias compose pull
Pulling libpostal ... done
Pulling schema ... done
Pulling api ... done
Pulling placeholder ... done
Pulling whosonfirst ... done
Pulling openstreetmap ... done
Pulling openaddresses ... done
Pulling transit ... done
Pulling csv-importer ... done
Pulling polylines ... done
Pulling interpolation ... done
Pulling pip ... done
Pulling elasticsearch ... done
Pulling fuzzy-tester ... done
raphy@WorldMap:~/pelias/docker/projects/portland-metro$ pelias elastic start
Recreating pelias_elasticsearch ...
ERROR: for pelias_elasticsearch 'ContainerConfig'
ERROR: for elasticsearch 'ContainerConfig'
Traceback (most recent call last):
File "/usr/bin/docker-compose", line 33, in <module>
sys.exit(load_entry_point('docker-compose==1.29.2', 'console_scripts', 'docker-compose')())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 81, in main
command_func()
File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 203, in perform_command
handler(command, command_options)
File "/usr/lib/python3/dist-packages/compose/metrics/decorator.py", line 18, in wrapper
result = fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 1186, in up
to_attach = up(False)
^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 1166, in up
return self.project.up(
^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/project.py", line 697, in up
results, errors = parallel.parallel_execute(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/parallel.py", line 108, in parallel_execute
raise error_to_reraise
File "/usr/lib/python3/dist-packages/compose/parallel.py", line 206, in producer
result = func(obj)
^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/project.py", line 679, in do
return service.execute_convergence_plan(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/service.py", line 579, in execute_convergence_plan
return self._execute_convergence_recreate(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/service.py", line 499, in _execute_convergence_recreate
containers, errors = parallel_execute(
^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/parallel.py", line 108, in parallel_execute
raise error_to_reraise
File "/usr/lib/python3/dist-packages/compose/parallel.py", line 206, in producer
result = func(obj)
^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/service.py", line 494, in recreate
return self.recreate_container(
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/service.py", line 612, in recreate_container
new_container = self.create_container(
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/service.py", line 330, in create_container
container_options = self._get_container_create_options(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/service.py", line 921, in _get_container_create_options
container_options, override_options = self._build_container_volume_options(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/service.py", line 960, in _build_container_volume_options
binds, affinity = merge_volume_bindings(
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/service.py", line 1548, in merge_volume_bindings
old_volumes, old_mounts = get_container_data_volumes(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/service.py", line 1579, in get_container_data_volumes
container.image_config['ContainerConfig'].get('Volumes') or {}
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
KeyError: 'ContainerConfig'
last lines of the output of pelias compose logs elasticsearch :
raphy@WorldMap:~/pelias/docker/projects/portland-metro$ pelias compose logs elasticsearch :
c2c8ebdaeeb2_pelias_elasticsearch | ElasticsearchException[failed to bind service]; nested: AccessDeniedException[/usr/share/elasticsearch/data/nodes];
c2c8ebdaeeb2_pelias_elasticsearch | Likely root cause: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes
c2c8ebdaeeb2_pelias_elasticsearch | at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:90)
c2c8ebdaeeb2_pelias_elasticsearch | at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
c2c8ebdaeeb2_pelias_elasticsearch | at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
c2c8ebdaeeb2_pelias_elasticsearch | at java.base/sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:438)
c2c8ebdaeeb2_pelias_elasticsearch | at java.base/java.nio.file.Files.createDirectory(Files.java:699)
c2c8ebdaeeb2_pelias_elasticsearch | at java.base/java.nio.file.Files.createAndCheckIsDirectory(Files.java:807)
c2c8ebdaeeb2_pelias_elasticsearch | at java.base/java.nio.file.Files.createDirectories(Files.java:793)
c2c8ebdaeeb2_pelias_elasticsearch | at org.elasticsearch.env.NodeEnvironment.lambda$new$0(NodeEnvironment.java:300)
c2c8ebdaeeb2_pelias_elasticsearch | at org.elasticsearch.env.NodeEnvironment$NodeLock.<init>(NodeEnvironment.java:224)
c2c8ebdaeeb2_pelias_elasticsearch | at org.elasticsearch.env.NodeEnvironment.<init>(NodeEnvironment.java:298)
c2c8ebdaeeb2_pelias_elasticsearch | at org.elasticsearch.node.Node.<init>(Node.java:429)
c2c8ebdaeeb2_pelias_elasticsearch | at org.elasticsearch.node.Node.<init>(Node.java:309)
c2c8ebdaeeb2_pelias_elasticsearch | at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:234)
c2c8ebdaeeb2_pelias_elasticsearch | at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:234)
c2c8ebdaeeb2_pelias_elasticsearch | at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:434)
c2c8ebdaeeb2_pelias_elasticsearch | at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:169)
c2c8ebdaeeb2_pelias_elasticsearch | at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:160)
c2c8ebdaeeb2_pelias_elasticsearch | at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:77)
c2c8ebdaeeb2_pelias_elasticsearch | at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:112)
c2c8ebdaeeb2_pelias_elasticsearch | at org.elasticsearch.cli.Command.main(Command.java:77)
c2c8ebdaeeb2_pelias_elasticsearch | at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:125)
c2c8ebdaeeb2_pelias_elasticsearch | at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:80)
c2c8ebdaeeb2_pelias_elasticsearch | For complete error details, refer to the log at /usr/share/elasticsearch/logs/pelias-dev.log
There is no /usr/share/elasticsearch/logs/pelias-dev.log :
raphy@WorldMap:~/pelias/docker/projects/portland-metro$ tail /usr/share/elasticsearch/
NOTICE.txt README.asciidoc bin/ jdk/ lib/ modules/ plugins/
raphy@WorldMap:~/pelias/docker/projects/portland-metro$ pelias compose ps
Name Command State Ports
-------------------------------------------------------------------------------------
c2c8ebdaeeb2_pelias_elasticsearch /bin/tini -- /usr/local/bi ... Exit 143
pelias_api ./bin/start Exit 137
pelias_csv_importer /bin/bash Exit 0
pelias_fuzzy_tester ./bin/fuzzy-tester --help Exit 0
pelias_interpolation ./interpolate server /data ... Exit 1
pelias_libpostal /bin/wof-libpostal-server ... Exit 0
pelias_openaddresses /bin/bash Exit 0
pelias_openstreetmap /bin/bash Exit 0
pelias_pip-service ./bin/start Exit 1
pelias_placeholder ./cmd/server.sh Exit 1
pelias_polylines /bin/bash Exit 0
pelias_schema /bin/bash Exit 0
pelias_transit /bin/bash Exit 0
pelias_whosonfirst /bin/bash Exit 0
How to make it work?
Is your user part of the docker group? What does ls -al ./data/ say? You wont find anything helpful under /usr/share/elasticsearch/ since elasticsearch is dockered.
Hi @arnesetzer !
Yes. The user raphy is part of the docker group :
raphy@WorldMap:~/pelias/docker/projects/portland-metro$ id raphy
uid=1000(raphy) gid=1000(raphy) groups=1000(raphy),100(users),133(docker)
output of ls -al ./data/ :
raphy@WorldMap:~/pelias/docker/projects/portland-metro$ ls -al ./data/
total 16
drwxrwxr-x 4 raphy raphy 4096 Jun 11 21:17 .
drwxrwxr-x 6 raphy raphy 4096 Jun 12 11:01 ..
drwxr-xr-x 2 root root 4096 Jun 11 20:43 blacklist
drwxr-xr-x 2 root root 4096 Jun 11 21:17 elasticsearch
raphy@WorldMap:~/pelias/docker/projects/portland-metro/data/elasticsearch$ ls -lah
total 8.0K
drwxr-xr-x 2 root root 4.0K Jun 11 21:17 .
drwxrwxr-x 4 raphy raphy 4.0K Jun 11 21:17
docker-compose.yml :
raphy@WorldMap:~/pelias/docker/projects/portland-metro$ cat docker-compose.yml
version: '3'
networks:
default:
driver: bridge
services:
libpostal:
image: pelias/libpostal-service
container_name: pelias_libpostal
user: "${DOCKER_USER}"
restart: always
ports: [ "127.0.0.1:4400:4400" ]
schema:
image: pelias/schema:master
container_name: pelias_schema
user: "${DOCKER_USER}"
volumes:
- "./pelias.json:/code/pelias.json"
api:
image: pelias/api:master
container_name: pelias_api
user: "${DOCKER_USER}"
restart: always
environment: [ "PORT=4000" ]
ports: [ "0.0.0.0:4000:4000" ]
volumes:
- "./pelias.json:/code/pelias.json"
placeholder:
image: pelias/placeholder:master
container_name: pelias_placeholder
user: "${DOCKER_USER}"
restart: always
environment: [ "PORT=4100" ]
ports: [ "127.0.0.1:4100:4100" ]
volumes:
- "./pelias.json:/code/pelias.json"
- "${DATA_DIR}:/data"
- "./blacklist/:/data/blacklist"
whosonfirst:
image: pelias/whosonfirst:master
container_name: pelias_whosonfirst
user: "${DOCKER_USER}"
volumes:
- "./pelias.json:/code/pelias.json"
- "${DATA_DIR}:/data"
- "./blacklist/:/data/blacklist"
openstreetmap:
image: pelias/openstreetmap:master
container_name: pelias_openstreetmap
user: "${DOCKER_USER}"
volumes:
- "./pelias.json:/code/pelias.json"
- "${DATA_DIR}:/data"
- "./blacklist/:/data/blacklist"
openaddresses:
image: pelias/openaddresses:master
container_name: pelias_openaddresses
user: "${DOCKER_USER}"
volumes:
- "./pelias.json:/code/pelias.json"
- "${DATA_DIR}:/data"
- "./blacklist/:/data/blacklist"
transit:
image: pelias/transit:master
container_name: pelias_transit
user: "${DOCKER_USER}"
volumes:
- "./pelias.json:/code/pelias.json"
- "${DATA_DIR}:/data"
csv-importer:
image: pelias/csv-importer:master
container_name: pelias_csv_importer
user: "${DOCKER_USER}"
volumes:
- "./pelias.json:/code/pelias.json"
- "${DATA_DIR}:/data"
- "./blacklist/:/data/blacklist"
polylines:
image: pelias/polylines:master
container_name: pelias_polylines
user: "${DOCKER_USER}"
volumes:
- "./pelias.json:/code/pelias.json"
- "${DATA_DIR}:/data"
interpolation:
image: pelias/interpolation:master
container_name: pelias_interpolation
user: "${DOCKER_USER}"
restart: always
environment: [ "PORT=4300" ]
ports: [ "127.0.0.1:4300:4300" ]
volumes:
- "./pelias.json:/code/pelias.json"
- "${DATA_DIR}:/data"
pip:
image: pelias/pip-service:master
container_name: pelias_pip-service
user: "${DOCKER_USER}"
restart: always
environment: [ "PORT=4200" ]
ports: [ "127.0.0.1:4200:4200" ]
volumes:
- "./pelias.json:/code/pelias.json"
- "${DATA_DIR}:/data"
elasticsearch:
image: pelias/elasticsearch:7.17.27
container_name: pelias_elasticsearch
user: "${DOCKER_USER}"
restart: always
ports: [ "127.0.0.1:9200:9200", "127.0.0.1:9300:9300" ]
volumes:
- "${DATA_DIR}/elasticsearch:/usr/share/elasticsearch/data" // <--------------------------------------------------------------
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
cap_add: [ "IPC_LOCK" ]
fuzzy-tester:
image: pelias/fuzzy-tester:master
container_name: pelias_fuzzy_tester
user: "${DOCKER_USER}"
restart: "no"
command: "--help"
volumes:
- "./pelias.json:/code/pelias.json"
- "./test_cases:/code/pelias/fuzzy-tester/test_case
Is the volumes of elasticsearch correct? :
volumes:
- "${DATA_DIR}/elasticsearch:/usr/share/elasticsearch/data"
The owner for the elasticsearch folder are wrong. The user should own them.
pelias compose down && sudo chown -R $USER:$USER ./data/elasticsearch should do the trick. Or deleting the folder and running pelias elastic start since it creates the folder
Deleting the ./data/elasticsearch folder and afterwards running pelias elastic start didn't solve the issue:
raphy@WorldMap:~/pelias/docker/projects/portland-metro/data$ rm -rf elasticsearch/
raphy@WorldMap:~/pelias/docker/projects/portland-metro/data$ cd ..
raphy@WorldMap:~/pelias/docker/projects/portland-metro$ pelias elastic start
Recreating c2c8ebdaeeb2_pelias_elasticsearch ...
ERROR: for c2c8ebdaeeb2_pelias_elasticsearch 'ContainerConfig'
ERROR: for elasticsearch 'ContainerConfig'
Traceback (most recent call last):
File "/usr/bin/docker-compose", line 33, in <module>
sys.exit(load_entry_point('docker-compose==1.29.2', 'console_scripts', 'docker-compose')())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 81, in main
command_func()
File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 203, in perform_command
handler(command, command_options)
File "/usr/lib/python3/dist-packages/compose/metrics/decorator.py", line 18, in wrapper
result = fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 1186, in up
to_attach = up(False)
^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 1166, in up
return self.project.up(
^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/project.py", line 697, in up
results, errors = parallel.parallel_execute(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/parallel.py", line 108, in parallel_execute
raise error_to_reraise
File "/usr/lib/python3/dist-packages/compose/parallel.py", line 206, in producer
result = func(obj)
^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/project.py", line 679, in do
return service.execute_convergence_plan(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/service.py", line 579, in execute_convergence_plan
return self._execute_convergence_recreate(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/service.py", line 499, in _execute_convergence_recreate
containers, errors = parallel_execute(
^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/parallel.py", line 108, in parallel_execute
raise error_to_reraise
File "/usr/lib/python3/dist-packages/compose/parallel.py", line 206, in producer
result = func(obj)
^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/service.py", line 494, in recreate
return self.recreate_container(
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/service.py", line 612, in recreate_container
new_container = self.create_container(
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/service.py", line 330, in create_container
container_options = self._get_container_create_options(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/service.py", line 921, in _get_container_create_options
container_options, override_options = self._build_container_volume_options(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/service.py", line 960, in _build_container_volume_options
binds, affinity = merge_volume_bindings(
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/service.py", line 1548, in merge_volume_bindings
old_volumes, old_mounts = get_container_data_volumes(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/service.py", line 1579, in get_container_data_volumes
container.image_config['ContainerConfig'].get('Volumes') or {}
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
KeyError: 'ContainerConfig'
Changing the ownership od ./data/elasticsearch subfolder solved that issue, but surfaced another issue:
Cannot start service elasticsearch . 127.0.0.1:9200: bind: address already in use :
raphy@WorldMap:~/pelias/docker/projects/portland-metro$ pelias compose down && sudo chown -R $USER:$USER ./data/elasticsearch
Removing c2c8ebdaeeb2_pelias_elasticsearch ... done
Removing pelias_fuzzy_tester ... done
Removing pelias_pip-service ... done
Removing pelias_libpostal ... done
Removing pelias_transit ... done
Removing pelias_csv_importer ... done
Removing pelias_polylines ... done
Removing pelias_openstreetmap ... done
Removing pelias_openaddresses ... done
Removing pelias_placeholder ... done
Removing pelias_interpolation ... done
Removing pelias_schema ... done
Removing pelias_whosonfirst ... done
Removing pelias_api ... done
Removing network pelias_default
[sudo] password for raphy:
raphy@WorldMap:~/pelias/docker/projects/portland-metro$
raphy@WorldMap:~/pelias/docker/projects/portland-metro$ pelias elastic start
Creating network "pelias_default" with driver "bridge"
Creating pelias_elasticsearch ...
Creating pelias_elasticsearch ... error
ERROR: for pelias_elasticsearch Cannot start service elasticsearch: driver failed programming external connectivity on endpoint pelias_elasticsearch (871fa21f1ea43c33fba9fb7e803ea137880b8e5c01784ad1bfe033bb09cc78c9): failed to bind port 127.0.0.1:9200/tcp: Error starting userland proxy: listen tcp4 127.0.0.1:9200: bind: address already in use
ERROR: for elasticsearch Cannot start service elasticsearch: driver failed programming external connectivity on endpoint pelias_elasticsearch (871fa21f1ea43c33fba9fb7e803ea137880b8e5c01784ad1bfe033bb09cc78c9): failed to bind port 127.0.0.1:9200/tcp: Error starting userland proxy: listen tcp4 127.0.0.1:9200: bind: address already in use
ERROR: Encountered errors while bringing up the project.
raphy@WorldMap:~/pelias/docker/projects/portland-metro$ pelias compose ps
Name Command State Ports
------------------------------------------------------------------------
pelias_elasticsearch /bin/tini -- /usr/local/bi ... Exit 128
Deleting the ./data/elasticsearch folder and afterwards running pelias elastic start didn't solve the issue:
Indicates, that something in your docker setup is messed up huge. I recommend to fix this before continue anything
127.0.0.1:9200: bind: address already in use
Well that describes very good what to do: Stop the service which uses 127.0.0.1:9200/tcp and start the elastic container again.
@arnesetzer I had to kill or stop few services since, every time I killed or stopped a service using 9200/tcp , another service grabbed it
Now pelias elastic started:
raphy@WorldMap:~/pelias/docker/projects/portland-metro$ pelias elastic start
Starting pelias_elasticsearch ... done
Question:
Is that port 9200/tcp the only port that can and must be used for pelias_elasticsearch, or another port can be set and used for pelias_elasticsearch?
By the way,
something in the download process has to be fixed :
https://github.com/pelias/docker/issues/380#issue-3139767379
- Please check if the issue is a pelias related issue or not. Spamming the repository with wrong issues will decrease the likeliness of getting answers.
- Issues are not a chat function for general questions about your setup. Use https://app.gitter.im/#/room/#pelias_pelias:gitter.im for questions.
- Yes, you can remap the port to anything you like. Just make sure that you mention that in your pelias.json config aswell. Otherwise the api will have a hard time to connect to the database. See https://github.com/pelias/documentation/blob/master/pelias_from_scratch.md#customize-pelias-config for more information