Python 3.8-alpine docker 撰写失败
Python 3.8-alpine docker compose failing
我已经 运行安装了一个没有 docker 的应用程序,并且刚刚添加了 Dockerfile
和 docker-compose
。
我遇到的问题是,在我成功构建应用程序后,当我 运行 或 migrate
.
时,runserver
会产生以下错误
➜ app git:(master) sudo docker-compose run app sh -c "python manage.py runserver"
Error loading shared library libpython3.8.so.1.0: No such file or directory (needed by /usr/local/bin/python)
Error relocating /usr/local/bin/python: Py_BytesMain: symbol not found
failed to resize tty, using default size
%
➜ app git:(master) sudo docker-compose run app sh -c "python manage.py migrate"
Error loading shared library libpython3.8.so.1.0: No such file or directory (needed by /usr/local/bin/python)
Error relocating /usr/local/bin/python: Py_BytesMain: symbol not found
Dockerfile
FROM python:3.8-alpine
MAINTAINER realize-sec
ENV PYTHONUNBUFFERED 1
COPY requirements.txt /requirements.txt
RUN pip install -r requirements.txt
RUN mkdir /app
WORKDIR /app
COPY ./app /app
RUN adduser -D user
USER user
docker-compose.yml
version: "3"
services:
app:
build:
context: ""
ports:
- "8000:8000"
volumes:
- ./app:/app
command: >
sh -c "python manage.py runserver 0.0.0.0:8000"
我做错什么导致了这个?
当我 运行 没有 docker 使用 python3 manage.py runserver
时它工作正常。
因为我还没有测试构建,所以我不知道这些东西是否会帮助您最终构建容器,但是这里有一些观察结果,希望能让您走上正确的道路。
- 您的上下文是一个空字符串,通常是一个点 (.)
- 您通常使用以下命令完成 Docker 文件:
CMD [ "python3", "manage.py", "runserver", "0.0.0.0:8000" ]
所以你可以从你的撰写文件中删除它。
除此之外,更一般地说,尽管 Alpine 图像很小,但由于您需要 add/remove 的额外依赖项和包,它们很容易损坏。总体而言,选择纤薄版本可能会更好。原始构建需要更长的时间,但更易于管理。
此外,如果您的计算机上 运行 是 Docker 的现代版本,那么您可以将撰写文件的语法版本移动到版本 3.7 或 3.8,具体取决于您的版本共 Docker.
我已经 运行安装了一个没有 docker 的应用程序,并且刚刚添加了 Dockerfile
和 docker-compose
。
我遇到的问题是,在我成功构建应用程序后,当我 运行 或 migrate
.
runserver
会产生以下错误
➜ app git:(master) sudo docker-compose run app sh -c "python manage.py runserver"
Error loading shared library libpython3.8.so.1.0: No such file or directory (needed by /usr/local/bin/python)
Error relocating /usr/local/bin/python: Py_BytesMain: symbol not found
failed to resize tty, using default size
%
➜ app git:(master) sudo docker-compose run app sh -c "python manage.py migrate"
Error loading shared library libpython3.8.so.1.0: No such file or directory (needed by /usr/local/bin/python)
Error relocating /usr/local/bin/python: Py_BytesMain: symbol not found
Dockerfile
FROM python:3.8-alpine
MAINTAINER realize-sec
ENV PYTHONUNBUFFERED 1
COPY requirements.txt /requirements.txt
RUN pip install -r requirements.txt
RUN mkdir /app
WORKDIR /app
COPY ./app /app
RUN adduser -D user
USER user
docker-compose.yml
version: "3"
services:
app:
build:
context: ""
ports:
- "8000:8000"
volumes:
- ./app:/app
command: >
sh -c "python manage.py runserver 0.0.0.0:8000"
我做错什么导致了这个?
当我 运行 没有 docker 使用 python3 manage.py runserver
时它工作正常。
因为我还没有测试构建,所以我不知道这些东西是否会帮助您最终构建容器,但是这里有一些观察结果,希望能让您走上正确的道路。
- 您的上下文是一个空字符串,通常是一个点 (.)
- 您通常使用以下命令完成 Docker 文件:
CMD [ "python3", "manage.py", "runserver", "0.0.0.0:8000" ]
所以你可以从你的撰写文件中删除它。
除此之外,更一般地说,尽管 Alpine 图像很小,但由于您需要 add/remove 的额外依赖项和包,它们很容易损坏。总体而言,选择纤薄版本可能会更好。原始构建需要更长的时间,但更易于管理。
此外,如果您的计算机上 运行 是 Docker 的现代版本,那么您可以将撰写文件的语法版本移动到版本 3.7 或 3.8,具体取决于您的版本共 Docker.