当前位置: 代码迷 >> java >> 创建一个 dockerfile 来运行 python 和 groovy 应用程序 可能的解决方案
  详细解决方案

创建一个 dockerfile 来运行 python 和 groovy 应用程序 可能的解决方案

热度:65   发布时间:2023-07-31 10:58:04.0

我正在开发一个项目,该项目同时使用 python 和 groovy 从网站上抓取数据并对这些数据进行一些工程。

我想创建一个 dockerfile,它应该有一个 python(3.6.5) 作为基本映像,并且应该在其上安装 java8 和 groovy 来运行我的代码。

我现在拥有的 dockerfile 适用于所有 python 代码(图像:FROM python:3.6.5),但对于 groovy 脚本失败,我找不到可以用来在 dockerfile 中安装 groovy 的解决方案。

有没有人有解决这部分问题的 dockerfile ?

####docker 文件如下
FROM python:3.6.5 RUN sh -c "ls /usr/local/lib" RUN sh -c "cat /etc/*-release" # Contents of requirements.txt each on a separate line for incremental builds RUN pip install SQLAlchemy==1.2.7 RUN pip install pandas==0.23.0 RUN pip uninstall bson RUN pip install pymongo RUN pip install openpyxl==2.5.3 RUN pip install joblib RUN pip install impyla RUN sh -c "mkdir -p /src/dateng" ADD . /src/dateng RUN sh -c "ls /src/dateng" WORKDIR /src/dateng/ ENTRYPOINT ["python", "/src/dateng/_aws/trigger.py"]

你不需要使用sh -c command ,只需要RUN command ,我们不应该为每个命令使用 RUN 指令,intead 我们应该只将它们分组在一个RUN ,因为每个RUN是 docker 镜像中的一个单独的层,从而增加它的最终大小。

可能的解决方案

受此启发,我用于 Python 演示:

FROM python:3.6.5

ARG CONTAINER_USER="python"
ARG CONTAINER_UID="1000"

# Will not prompt for questions
ENV DEBIAN_FRONTEND=noninteractive \
    CONTAINER_USER=python \
    CONTAINER_UID=1000

RUN apt update && \
    apt -y upgrade && \
    apt -y install \
      ca-certificates \
      locales \
      tzdata \
      inotify-tools \
      python3-pip \
      groovy && \

    locale-gen en_GB.UTF-8 && \
    dpkg-reconfigure locales && \

    #https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers
    printf "fs.inotify.max_user_watches=524288\n" >> /etc/sysctl.conf && \

    useradd -m -u ${CONTAINER_UID} -s /bin/bash ${CONTAINER_USER}

ENV LANG=en_GB.UTF-8 \
    LANGUAGE=en_GB:en \
    LC_ALL=en_GB.UTF-8

USER ${CONTAINER_USER}

RUN pip3 install \
      fSQLAlchemy==1.2.7 \
      pandas==0.23.0 \
      pymongo \
      openpyxl==2.5.3 \
      joblib \
      impyla && \
    pip3 uninstall bson


# pip install will put the executables under ~/.local/bin
ENV PATH=/home/"${CONTAINER_USER}"/.local/bin:$PATH

WORKDIR /home/${CONTAINER_USER}/workspace

ADD . /home/${CONTAINER_USER}/dataeng

EXPOSE 5000

ENTRYPOINT ["python", "/home/python/dateng/_aws/trigger.py"]

注意:我在公司防火墙后面,因此我无法像现在一样测试构建此映像,因为我需要向其中添加您不需要的内容。 如果有什么不适合你,请告诉我,我会在家解决。

  相关解决方案