在docker-compose中使用入口点运行自定义脚本
我通过添加volumes
configuration和entrypoint
更改来修改docker-compose.yml
文件,如https://hub.docker.com/_/solr/中所示。 修改后的文件如下所示:
version: '3' services: solr: image: solr ports: - "8983:8983" volumes: - ./solr/init.sh:/init.sh - ./solr/data:/opt/solr/server/solr/mycores entrypoint: - init.sh - docker-entrypoint.sh - solr-precreate - mycore
我需要在入口点开始之前运行这个“init.sh”,以便在容器内准备我的文件。
但是我得到以下错误:
错误:对于solr_solr_1无法启动服务solr:oci运行时错误:container_linux.go:247:启动容器进程导致“exec:\”init.sh \“:可执行文件找不到$ PATH中”
早些时候,我从这里find了关于neo4j的官方图像钩子。 有没有类似的东西我也可以在这里使用?
更新1:从下面的评论,我意识到dockerfile设置WORKDIR /opt/solr
由于哪个executable file not found in $PATH
。 所以我通过使用/init.sh
来提供入口点的绝对path来进行/init.sh
。 但是这也给了错误,但是另外一个:
standard_init_linux.go:178:exec用户进程导致“exec格式错误”
看起来您需要将您的卷映射到/docker-entrypoint-initdb.d/
version: '3' services: solr: image: solr ports: - "8983:8983" volumes: - ./solr/init.sh:/docker-entrypoint-initdb.d/init.sh - ./solr/data:/opt/solr/server/solr/mycores entrypoint: - docker-entrypoint.sh - init
从
https://hub.docker.com/_/solr/
扩展图像 docker-solr图像具有扩展机制。 在运行时,在启动Solr之前,容器将在/docker-entrypoint-initdb.d/目录中执行脚本。 您可以通过使用装入的卷或使用自定义的Dockerfile在其中添加自己的脚本。 这些脚本可以例如复制带有预加载数据的核心目录以进行持续集成testing,或者修改Solrconfiguration。
docker-entrypoint.sh似乎负责根据传递给它的参数来运行sh脚本。 所以init是第一个参数,它依次尝试运行init.sh
docker-compose logs solr | head
更新1:
我一直在努力得到这个工作,终于想出了为什么我的docker-compose不工作,而docker run -v
指向/docker-entrypoint-initdb.d/init.sh工作。
事实certificate,删除入口点树是解决scheme。 这是我最后的docker工作人员:
version: '3' services: solr: image: solr:6.6-alpine ports: - "8983:8983" volumes: - ./solr/data/:/opt/solr/server/solr/ - ./solr/config/init.sh:/docker-entrypoint-initdb.d/init.sh
我的./solr/config/init.sh
#!/bin/bash echo "running" touch /opt/solr/server/solr/test.txt; echo "test" > /opt/solr/server/solr/test.txt;
- 应用程序直接连接到容器
- 在Windows 10与Maven的Docker
- Docker-没有这样的文件或目录窗口的Ubuntu的Ubuntu bash
- 任何人都可以让我知道什么是我的docker文件的问题?
- Root用户在Elasticsearch 2.4.0的Docker容器中
- 我在docker集线器上find了一个我喜欢但不符合我的需求的图像。 我如何更新它并使之成为我自己的?
- 基于Linux Docker + Rethinkdb映像resize的Azure虚拟机并丢失数据,这是可以预料的吗?
- 如何修改弹性search实例的群集名称?
- 在Docker中使用docker-compose运行laravel / lumen