load-net

telegram bot docker run

Feb 1st, 2023 (edited)
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.86 KB | None | 0 0
  1. #https://github.com/docker-library/python/blob/a1af335ee34324b2f40d7e90345f9468328f6a00/3.12-rc/slim-bullseye/Dockerfile
  2. FROM alpine:3.17
  3.  
  4. # ensure local python is preferred over distribution python
  5. ENV PATH /usr/local/bin:$PATH
  6.  
  7. # http://bugs.python.org/issue19846
  8. # > At the moment, setting "LANG=C" on a Linux system *fundamentally breaks Python 3*, and that's not OK.
  9. ENV LANG C.UTF-8
  10.  
  11. # runtime dependencies
  12. RUN set -eux; \
  13. apk add --no-cache \
  14. ca-certificates \
  15. tzdata \
  16. ;
  17.  
  18. ENV GPG_KEY A035C8C19219BA821ECEA86B64E628F8D684696D
  19. ENV PYTHON_VERSION 3.11.1
  20.  
  21. RUN set -eux; \
  22. \
  23. apk add --no-cache --virtual .build-deps \
  24. gnupg \
  25. tar \
  26. xz \
  27. \
  28. bluez-dev \
  29. bzip2-dev \
  30. dpkg-dev dpkg \
  31. expat-dev \
  32. findutils \
  33. gcc \
  34. gdbm-dev \
  35. libc-dev \
  36. libffi-dev \
  37. libnsl-dev \
  38. libtirpc-dev \
  39. linux-headers \
  40. make \
  41. ncurses-dev \
  42. openssl-dev \
  43. patchelf \
  44. pax-utils \
  45. readline-dev \
  46. sqlite-dev \
  47. tcl-dev \
  48. tk \
  49. tk-dev \
  50. util-linux-dev \
  51. xz-dev \
  52. zlib-dev \
  53. ; \
  54. \
  55. wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz"; \
  56. wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc"; \
  57. GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
  58. gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$GPG_KEY"; \
  59. gpg --batch --verify python.tar.xz.asc python.tar.xz; \
  60. command -v gpgconf > /dev/null && gpgconf --kill all || :; \
  61. rm -rf "$GNUPGHOME" python.tar.xz.asc; \
  62. mkdir -p /usr/src/python; \
  63. tar --extract --directory /usr/src/python --strip-components=1 --file python.tar.xz; \
  64. rm python.tar.xz; \
  65. \
  66. cd /usr/src/python; \
  67. gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
  68. ./configure \
  69. --build="$gnuArch" \
  70. --enable-loadable-sqlite-extensions \
  71. --enable-optimizations \
  72. --enable-option-checking=fatal \
  73. --enable-shared \
  74. --with-lto \
  75. --with-system-expat \
  76. --without-ensurepip \
  77. ; \
  78. nproc="$(nproc)"; \
  79. make -j "$nproc" \
  80. # set thread stack size to 1MB so we don't segfault before we hit sys.getrecursionlimit()
  81. # https://github.com/alpinelinux/aports/commit/2026e1259422d4e0cf92391ca2d3844356c649d0
  82. EXTRA_CFLAGS="-DTHREAD_STACK_SIZE=0x100000" \
  83. LDFLAGS="-Wl,--strip-all" \
  84. ; \
  85. make install; \
  86. \
  87. # https://github.com/docker-library/python/issues/784
  88. # prevent accidental usage of a system installed libpython of the same version
  89. bin="$(readlink -vf /usr/local/bin/python3)"; \
  90. patchelf --set-rpath '$ORIGIN/../lib' "$bin"; \
  91. \
  92. cd /; \
  93. rm -rf /usr/src/python; \
  94. \
  95. find /usr/local -depth \
  96. \( \
  97. \( -type d -a \( -name test -o -name tests -o -name idle_test \) \) \
  98. -o \( -type f -a \( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \) \) \
  99. \) -exec rm -rf '{}' + \
  100. ; \
  101. \
  102. find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec scanelf --needed --nobanner --format '%n#p' '{}' ';' \
  103. | tr ',' '\n' \
  104. | sort -u \
  105. | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
  106. | xargs -rt apk add --no-network --virtual .python-rundeps \
  107. ; \
  108. apk del --no-network .build-deps; \
  109. \
  110. python3 --version
  111.  
  112. # make some useful symlinks that are expected to exist ("/usr/local/bin/python" and friends)
  113. RUN set -eux; \
  114. for src in idle3 pydoc3 python3 python3-config; do \
  115. dst="$(echo "$src" | tr -d 3)"; \
  116. [ -s "/usr/local/bin/$src" ]; \
  117. [ ! -e "/usr/local/bin/$dst" ]; \
  118. ln -svT "$src" "/usr/local/bin/$dst"; \
  119. done
  120.  
  121. # if this is called "PIP_VERSION", pip explodes with "ValueError: invalid truth value '<VERSION>'"
  122. ENV PYTHON_PIP_VERSION 22.3.1
  123. # https://github.com/docker-library/python/issues/365
  124. ENV PYTHON_SETUPTOOLS_VERSION 65.5.1
  125. # https://github.com/pypa/get-pip
  126. ENV PYTHON_GET_PIP_URL https://github.com/pypa/get-pip/raw/66030fa03382b4914d4c4d0896961a0bdeeeb274/public/get-pip.py
  127. ENV PYTHON_GET_PIP_SHA256 1e501cf004eac1b7eb1f97266d28f995ae835d30250bec7f8850562703067dc6
  128.  
  129. RUN set -eux; \
  130. \
  131. wget -O get-pip.py "$PYTHON_GET_PIP_URL"; \
  132. echo "$PYTHON_GET_PIP_SHA256 *get-pip.py" | sha256sum -c -; \
  133. \
  134. export PYTHONDONTWRITEBYTECODE=1; \
  135. \
  136. python get-pip.py \
  137. --disable-pip-version-check \
  138. --no-cache-dir \
  139. --no-compile \
  140. "pip==$PYTHON_PIP_VERSION" \
  141. "setuptools==$PYTHON_SETUPTOOLS_VERSION" \
  142. ; \
  143. rm -f get-pip.py; \
  144. \
  145. pip --version
  146.  
  147.  
  148. WORKDIR /app_demo
  149. COPY . ./
  150. RUN pip install --upgrade pip
  151. RUN pip install -r requirements.txt
  152.  
  153.  
  154.  
  155. #Инструкция COPY представлена в нашем файле так: COPY . ./app.
  156. #Она сообщает Docker о том, что нужно взять файлы и папки из локального контекста сборки и добавить их в текущую рабочую директорию образа.
  157. #Если целевая директория не существует, эта инструкция её создаст.
  158. #COPY . ./app
  159.  
  160. #Позже в нашем Dockerfile использована exec-форма инструкции RUN, в виде RUN ["mkdir", "/a_directory"] для создания директории.
  161. #При этом, используя инструкцию в такой форме, нужно помнить о необходимости оформления строк с помощью двойных кавычек, как это принято в формате JSON.
  162. #RUN ["mkdir", "/a_directory"]
  163.  
  164. #Инструкция CMD предоставляет Docker команду, которую нужно выполнить при запуске контейнера. Результаты выполнения этой команды не добавляются в образ во время его сборки.
  165. #В нашем примере с помощью этой команды запускается скрипт welcomer.py во время выполнения контейнера.
  166. CMD ["python", "./welcomer.py"]
  167.  
  168.  
  169. #Удалить все не включенное
  170. #docker system prune -a
  171. #
  172. #docker images
  173. #docker ps
  174. #
  175. #
  176. #Сформировать контейнер с именем welc в текущей дериктории
  177. #docker build -t welc .
  178. #
  179. #Запустить в режиме демона -d с именем welc-test1 контейнер под названием welc
  180. #docker run -d --name welc-test1 welc
  181. #
  182. #Просмотр информации о контейнере
  183. #docker inspect 981c0309d852
  184. #Например о том где лежит контейнер "WorkDir": "/var/lib/docker/overlay2/102ef5890a18c0f7b115f67b5ae3b414aa0a0a3de6566746e6b996ed71494131/work"
  185. #ls -l /var/lib/docker/overlay2/102ef5890a18c0f7b115f67b5ae3b414aa0a0a3de6566746e6b996ed71494131/work
Advertisement
Add Comment
Please, Sign In to add comment