Dockerfile 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. FROM nvidia/cuda:11.0-cudnn8-devel-ubuntu18.04 AS builder
  2. RUN sed -i 's#archive.ubuntu.com#mirrors.aliyun.com#g' /etc/apt/sources.list \
  3. && sed -i 's#security.ubuntu.com#mirrors.aliyun.com#g' /etc/apt/sources.list
  4. ENV LANG=zh_CN.UTF-8 LANGUAGE=zh_CN:zh LC_ALL=zh_CN.UTF-8 DEBIAN_FRONTEND=noninteractive
  5. RUN rm -rf /etc/apt/sources.list.d/ && apt update
  6. RUN apt-get update && apt-get install -y --no-install-recommends \
  7. supervisor \
  8. iputils-ping \
  9. wget \
  10. zsh \
  11. build-essential \
  12. cmake \
  13. git \
  14. curl \
  15. vim \
  16. ca-certificates \
  17. libjpeg-dev \
  18. zip \
  19. unzip \
  20. libpng-dev \
  21. openssh-server \
  22. autojump \
  23. language-pack-zh-hans \
  24. ttf-wqy-zenhei \
  25. libgl1-mesa-glx \
  26. libglib2.0-0 \
  27. locales &&\
  28. rm -rf /var/lib/apt/lists/*
  29. RUN locale-gen zh_CN.UTF-8
  30. RUN dpkg-reconfigure locales
  31. CMD ["supervisord", "-n"]
  32. FROM builder as builder1
  33. ENV PYTHON_VERSION 3
  34. RUN chsh -s `which zsh`
  35. RUN curl -o ~/miniconda.sh -O https://repo.anaconda.com/miniconda/Miniconda${PYTHON_VERSION}-latest-Linux-x86_64.sh && \
  36. chmod +x ~/miniconda.sh && \
  37. ~/miniconda.sh -b -p /opt/conda && \
  38. rm ~/miniconda.sh
  39. RUN ln /opt/conda/bin/conda /usr/local/bin/conda
  40. RUN conda init zsh
  41. RUN conda install mamba -n base -c conda-forge
  42. RUN ln /opt/conda/bin/mamba /usr/local/bin/mamba && mamba init zsh
  43. FROM builder1 as builder2
  44. RUN apt-get update && apt-get install -y --no-install-recommends openssh-server && rm -rf /var/lib/apt/lists/*
  45. RUN mkdir /var/run/sshd
  46. RUN echo 'root:root' | chpasswd
  47. RUN sed -i 's/.*PermitRootLogin .*/PermitRootLogin yes/' /etc/ssh/sshd_config
  48. # SSH login fix. Otherwise user is kicked off after login
  49. RUN sed -i 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' /etc/pam.d/sshd
  50. RUN echo "\
  51. [program:sshd] \n\
  52. command=/usr/sbin/sshd -D\n\
  53. autorestart=True\n\
  54. autostart=True\n\
  55. redirect_stderr = true\n\
  56. " > /etc/supervisor/conf.d/sshd.conf
  57. EXPOSE 22
  58. FROM builder2 as builder3
  59. WORKDIR /workspace
  60. ADD environment.yml /environment.yml
  61. RUN mamba update -n base -c defaults conda -y
  62. RUN mamba env create -f /environment.yml && rm -rf /root/.cache
  63. RUN echo "\
  64. [program:be]\n\
  65. directory=/workspace\n\
  66. command=/opt/conda/envs/py38/bin/gunicorn server:app --workers 1 --worker-class=uvicorn.workers.UvicornWorker --bind 0.0.0.0:8080 --reload \n\
  67. autorestart=true\n\
  68. startretries=0\n\
  69. redirect_stderr=true\n\
  70. stdout_logfile=/var/log/be.log\n\
  71. stdout_logfile_maxbytes=50MB\n\
  72. environment=PYTHONUNBUFFERED=1\n\
  73. " > /etc/supervisor/conf.d/be.conf
  74. ARG VERSION
  75. ENV USE_CUDA $VERSION
  76. ADD . /workspace
  77. EXPOSE 8080