3

我是码头工人的新手。我的 docker 桌面在 Windows 10 上运行。我必须在 docker 容器中运行 solr,然后将其推送到 docker 私有存储库集线器。

我正在关注文章https://github.com/docker-solr/docker-solr

我有一个在 Linux 中运行的带有 docker 容器的 azure Web 应用程序 - 它将调用来自 docker hub 存储库的 docker 映像私有。

http://solrdockerwebapp.azurewebsites.net/solr/#/--这是一个运行在 azure 上的网络应用。

我已经使用 PowerShell 命令在 docker desktop 中下载了 solr。

 docker pull solr:latest 
 docker run -d -p 8983:8983 --name my_solr solr:v1

我在本地浏览器中检查了 http://localhost:8983/solr/# 它运行正常。现在我创建了一个新的 solr 核心文件,它在 solrdata/data/core_demo 文件夹下生成。

但是如果我将图像推送到 docker 私有存储库中,那么这个核心文件就不会上升。

下面是我的码头文件

FROM openjdk:11-jre 
ARG SOLR_VERSION="8.5.2" 
ADD data/core_demo /opt/solr-8.5.2/server/solr/configsets 
WORKDIR /opt/solr 
ENTRYPOINT ["docker-entrypoint.sh"] 
CMD ["solr-foreground"]

构建并提交映像。

docker commit my_solr myprivaterepo/solr:latest 
docker push myprivaterepo/solr:latest 

问题是我的核心文件是在本地机器磁盘上生成的

D:/DockerFolder/var/solr/data/core_demo

但是在将图像推送到 docker hub 之后,这些核心文件和文件夹并没有加起来。因此,azure solr web 应用程序仅运行 solr,没有任何核心文件。

任何建议或帮助都会非常有帮助。

4

1 回答 1

3

我不是 docker 专家,在查看您的帖子后,我可以建议您使用以下命令:

  1. 在 docker 桌面创建卷
docker volume create var
  1. 更改 dockerfile 中的行
From solr:latest 
  1. 在 docker 文件中用 COPY 替换 ADD,如下所示
COPY  var/data var/solr/server/solr/data
  1. 现在构建图像
docker build --tag solr:latest . 
  1. Docker 使用一个合适的容器名称运行新建的镜像
docker run -d -v "$PWD/var:/var/solr" -p 8983:8983 --name Your_solrContainer solr:latest solr-precreate gettingstarted 

6.在这个 docker hub 中提交这个并像你在帖子中提到的那样推送它

docker commit Your_solrContainer myprivaterepo/solr:latest 
docker push myprivaterepo/solr:latest 

现在我希望您的 solr 核心数据已安装,并且您将能够在您正在运行的 Web 应用程序中看到它们。唯一缺少的是卷,因此数据可以保留在您的 docker 映像上。

于 2020-07-09T18:45:50.060 回答