使用Flask应用程序和Solr构建Docker



我是Docker的新手,我需要"码头化";我的Flask应用程序在后台使用Solr服务器(在solrcloud模式下(。我知道如何在Docker上部署我的应用程序,但没有Solr服务器。我不知道是应该只在一个dockerfile中完成,使用docker-compose还是使用多级docker。

现在我尝试了这样的东西:

### Multi-stage build
FROM solr:8.8.0
ADD custom-config /opt/solr/server/solr/configsets/custom-config
ADD solr.in.sh /etc/default
ADD *.jar /opt/solr/server/solr-webapp/webapp/WEB-INF/lib/
EXPOSE 8983
### II image
FROM continuumio/miniconda3
ADD . /flask-test
WORKDIR /flask-test
RUN apt update -y &&  apt upgrade -y && pip install -r requirements.txt
COPY --from=0 /opt/solr .
CMD ["solr", "start -c"]
CMD ["solr", "create_collection", "-c test", "-d /opt/solr/server/solr/configsets/custom-config"]
CMD ["python", "main.py"]

显然,这是行不通的。你有什么建议吗?感谢

更新

在提出一些建议后,我在两个不同的Dockerfile中分离了两个原始阶段,并试图将它们组合在一个docker-compose.yml中。因此,我有了一个Flask应用程序的Dockerfile:

FROM continuumio/miniconda3
ADD . /flask-test
WORKDIR /flask-test
RUN apt update -y &&  apt upgrade -y && pip install -r requirements.txt
CMD ["python", "main.py"]

Solr服务器的Dockerfile:

FROM solr:8.8.0
ADD custom-config /opt/solr/server/solr/configsets/custom-config
ADD solr.in.sh /etc/default
ADD *.jar /opt/solr/server/solr-webapp/webapp/WEB-INF/lib/
EXPOSE 8983
CMD solr start -c && solr create_collection -c test-d /opt/solr/server/solr/configsets/custom-config

在最后一步,我做了这个docker-compose.yml:

version: "3.9"
services:
flask:
build: .
ports:
- "5000:5000"
solr:
build: ./docker-solr
restart: unless-stopped
environment:
- Dsolr.default.confdir=/opt/solr/server/solr/configsets/custom-config/conf
ports:
- "8983:8983"

当运行docker compose up时,一切都很好,我的Flask应用程序正在启动,但问题是Solr服务继续启动命令并重新启动,因此,我的依赖localhost:8983的Flask程序无法正常工作。

有什么帮助吗?

正如您在Dockerfile中所指出的,您正在同一个Dockerfile上使用多个阶段(阶段数由FROM指令数计算(。

最新的FROM将消除另一个FORM,所以我们只使用多个FROM来减小图像大小并将数据从一个阶段传递到另一个阶段,但您的情况并非如此。

您需要的是使用两个dockerfile和后docker-compose.yml文件在两个独立的容器上分离这两个部分,

我希望这能帮助你解决你的问题。

相关内容

  • 没有找到相关文章

最新更新