Dockerfile.dev 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. FROM node:16.15.1-bullseye-slim AS builder-fe
  2. COPY requirements.txt .
  3. RUN sed -i "s@http://\(deb\|security\).debian.org@http://mirrors.aliyun.com@g" /etc/apt/sources.list
  4. RUN apt update
  5. RUN apt update && apt install -y libpython3-dev python3 python3-pip python-is-python3 make \
  6. && pip config set global.index-url https://mirror.baidu.com/pypi/simple \
  7. && pip install -U pip setuptools && pip install -r requirements.txt -i https://mirror.baidu.com/pypi/simple
  8. # \
  9. # && yarn config set registry https://registry.npm.taobao.org \
  10. # && npm config set registry https://registry.npm.taobao.org \
  11. # && npm config set disturl https://npm.taobao.org/dist
  12. #https://registry.npmmirror.com
  13. COPY . /src/
  14. ENV PYTHONPATH=/src
  15. RUN cd /src && chmod a+x ./bdist_wheel.sh && ./bdist_wheel.sh
  16. FROM ubuntu:18.04 AS builder
  17. RUN sed -i 's#archive.ubuntu.com#mirrors.aliyun.com#g' /etc/apt/sources.list \
  18. && sed -i 's#security.ubuntu.com#mirrors.aliyun.com#g' /etc/apt/sources.list
  19. ENV LANG=zh_CN.UTF-8 LANGUAGE=zh_CN:zh LC_ALL=zh_CN.UTF-8 DEBIAN_FRONTEND=noninteractive
  20. RUN rm -rf /etc/apt/sources.list.d/ && apt update
  21. RUN apt-get update && apt-get install -y --no-install-recommends \
  22. supervisor \
  23. iputils-ping \
  24. wget \
  25. zsh \
  26. build-essential \
  27. cmake \
  28. git \
  29. curl \
  30. vim \
  31. ca-certificates \
  32. libjpeg-dev \
  33. zip \
  34. unzip \
  35. libpng-dev \
  36. openssh-server \
  37. autojump \
  38. language-pack-zh-hans \
  39. ttf-wqy-zenhei \
  40. libgl1-mesa-glx \
  41. libglib2.0-0 \
  42. locales &&\
  43. rm -rf /var/lib/apt/lists/*
  44. RUN locale-gen zh_CN.UTF-8
  45. RUN dpkg-reconfigure locales
  46. CMD ["supervisord", "-n"]
  47. FROM builder as builder1
  48. ENV PYTHON_VERSION 3
  49. RUN chsh -s `which zsh`
  50. RUN curl -o ~/miniconda.sh -O https://repo.anaconda.com/miniconda/Miniconda${PYTHON_VERSION}-latest-Linux-x86_64.sh && \
  51. chmod +x ~/miniconda.sh && \
  52. ~/miniconda.sh -b -p /opt/conda && \
  53. rm ~/miniconda.sh
  54. RUN ln /opt/conda/bin/conda /usr/local/bin/conda
  55. RUN conda init zsh
  56. RUN conda install mamba -n base -c conda-forge
  57. RUN ln /opt/conda/bin/mamba /usr/local/bin/mamba && mamba init zsh
  58. FROM builder1 as builder2
  59. WORKDIR /workspace
  60. RUN /opt/conda/bin/pip install jupyterlab jupyterlab-language-pack-zh-CN -i https://pypi.douban.com/simple
  61. RUN mamba install nodejs -y
  62. # password 'sx'
  63. RUN /opt/conda/bin/jupyter lab --generate-config && \
  64. echo "c.NotebookApp.password='argon2:\$argon2id\$v=19\$m=10240,t=10,p=8\$+zIUCF9Uk2FiCHlV8njX5A\$I5Mm/64DORArcXYTXWRVng'">>/root/.jupyter/jupyter_lab_config.py
  65. FROM builder2 as builder3
  66. RUN apt-get update && apt-get install -y --no-install-recommends openjdk-8-jdk krb5-user net-tools iputils-ping
  67. RUN mamba install nodejs sparkmagic pyhive thrift sasl thrift_sasl scikit-learn -y
  68. # RUN /opt/conda/bin/pip install sparkmagipc -i https://pypi.douban.com/simple
  69. ENV PATH /opt/conda/bin/:$PATH
  70. RUN jupyter nbextension enable --py --sys-prefix widgetsnbextension
  71. RUN cd /opt/conda/lib/python3.9/site-packages/ \
  72. && jupyter-kernelspec install sparkmagic/kernels/sparkkernel \
  73. && jupyter-kernelspec install sparkmagic/kernels/pysparkkernel \
  74. && /opt/conda/bin/jupyter serverextension enable --py sparkmagic
  75. EXPOSE 8888
  76. # 内网sxkj
  77. FROM builder3 as image-sxkj
  78. COPY --from=builder-fe /src/dist dist
  79. RUN /opt/conda/bin/pip install dist/*.whl -i https://mirror.baidu.com/pypi/simple
  80. ADD confs/dev/config.json .
  81. RUN mkdir -p $HOME/.sparkmagic && cp config.json $HOME/.sparkmagic
  82. RUN echo "\
  83. [program:jupyter]\n\
  84. directory=/workspace\n\
  85. command=/bin/bash -c '/opt/conda/bin/jupyter lab --ip 0.0.0.0 --port 8888 --allow-root --no-browser --NotebookApp.allow_origin=* --NotebookApp.allow_remote_access=1' \n\
  86. autorestart=true\n\
  87. startretries=0\n\
  88. redirect_stderr=true\n\
  89. stdout_logfile=/var/log/jupyter.log\n\
  90. stdout_logfile_maxbytes=50MB\n\
  91. " > /etc/supervisor/conf.d/jupyter.conf
  92. # 腾讯云测试
  93. FROM builder3 as image-txtest
  94. COPY --from=builder-fe /src/dist dist
  95. RUN /opt/conda/bin/pip install dist/*.whl -i https://mirror.baidu.com/pypi/simple
  96. ADD confs/test/krb5.conf /etc/
  97. ADD confs/test/config.json .
  98. RUN mkdir -p $HOME/.sparkmagic && cp config.json $HOME/.sparkmagic
  99. ADD confs/test/user.keytab /
  100. RUN echo "\
  101. [program:jupyter]\n\
  102. directory=/workspace\n\
  103. command=/bin/bash -c 'kinit -k -t /user.keytab ailab && /opt/conda/bin/jupyter lab --ip 0.0.0.0 --port 8888 --allow-root --no-browser --NotebookApp.allow_origin=* --NotebookApp.allow_remote_access=1' \n\
  104. autorestart=true\n\
  105. startretries=0\n\
  106. redirect_stderr=true\n\
  107. stdout_logfile=/var/log/jupyter.log\n\
  108. stdout_logfile_maxbytes=50MB\n\
  109. " > /etc/supervisor/conf.d/jupyter.conf
  110. # 腾讯云生产
  111. FROM builder3 as image-txprod
  112. COPY --from=builder-fe /src/dist dist
  113. RUN /opt/conda/bin/pip install dist/*.whl -i https://mirror.baidu.com/pypi/simple
  114. ADD confs/txprod/krb5.conf /etc/
  115. ADD confs/txprod/config.json .
  116. RUN mkdir -p $HOME/.sparkmagic && cp config.json $HOME/.sparkmagic
  117. ADD confs/txprod/user.keytab /
  118. RUN echo "\
  119. [program:jupyter]\n\
  120. directory=/workspace\n\
  121. command=/bin/bash -c 'kinit -k -t /user.keytab ylaiuser && /opt/conda/bin/jupyter lab --ip 0.0.0.0 --port 8888 --allow-root --no-browser --NotebookApp.allow_origin=* --NotebookApp.allow_remote_access=1' \n\
  122. autorestart=true\n\
  123. startretries=0\n\
  124. redirect_stderr=true\n\
  125. stdout_logfile=/var/log/jupyter.log\n\
  126. stdout_logfile_maxbytes=50MB\n\
  127. " > /etc/supervisor/conf.d/jupyter.conf
  128. # 电信云测试
  129. FROM builder3 as image-idctest
  130. COPY --from=builder-fe /src/dist dist
  131. RUN /opt/conda/bin/pip install dist/*.whl -i https://mirror.baidu.com/pypi/simple
  132. ADD confs/idctest/config.json .
  133. RUN mkdir -p $HOME/.sparkmagic && cp config.json $HOME/.sparkmagic
  134. RUN echo "\
  135. [program:jupyter]\n\
  136. directory=/workspace\n\
  137. command=/bin/bash -c '/opt/conda/bin/jupyter lab --ip 0.0.0.0 --port 8888 --allow-root --no-browser --NotebookApp.allow_origin=* --NotebookApp.allow_remote_access=1' \n\
  138. autorestart=true\n\
  139. startretries=0\n\
  140. redirect_stderr=true\n\
  141. stdout_logfile=/var/log/jupyter.log\n\
  142. stdout_logfile_maxbytes=50MB\n\
  143. " > /etc/supervisor/conf.d/jupyter.conf