【发布时间】:2021-08-26 09:23:50
【问题描述】:
我一直在按照教程 (https://www.youtube.com/watch?v=nh1ynJGJuT8) 将 django 项目部署到 docker。两个 docker 文件独立工作,但是当我运行 docker-compose-deploy.yml 时,出现以下错误:
Attaching to app_1, proxy_1
app_1 |
app_1 | 128 static files copied to '/vol/web/static', 3 unmodified.
app_1 | Error loading shared library libxml2.so.2: No such file or directory (needed by /usr/local/bin/uwsgi)
app_1 | Error relocating /usr/local/bin/uwsgi: xmlDocSetRootElement: symbol not found
app_1 | Error relocating /usr/local/bin/uwsgi: xmlCheckVersion: symbol not found
app_1 | Error relocating /usr/local/bin/uwsgi: xmlNewTextChild: symbol not found
app_1 | Error relocating /usr/local/bin/uwsgi: xmlNewChild: symbol not found
app_1 | Error relocating /usr/local/bin/uwsgi: xmlNewDoc: symbol not found
app_1 | Error relocating /usr/local/bin/uwsgi: xmlReadMemory: symbol not found
app_1 | Error relocating /usr/local/bin/uwsgi: xmlNewNode: symbol not found
app_1 | Error relocating /usr/local/bin/uwsgi: xmlDocDumpFormatMemory: symbol not found
app_1 | Error relocating /usr/local/bin/uwsgi: xmlCleanupParser: symbol not found
app_1 | Error relocating /usr/local/bin/uwsgi: xmlFreeDoc: symbol not found
app_1 | Error relocating /usr/local/bin/uwsgi: xmlDocGetRootElement: symbol not found
app_1 | Error relocating /usr/local/bin/uwsgi: xmlGetProp: symbol not found
app_1 | Error relocating /usr/local/bin/uwsgi: xmlFree: symbol not found
proxy_1 | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
proxy_1 | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
proxy_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
app_1 exited with code 127
proxy_1 | 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
proxy_1 | 10-listen-on-ipv6-by-default.sh: info: /etc/nginx/conf.d/default.conf differs from the packaged version
proxy_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
proxy_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
proxy_1 | /docker-entrypoint.sh: Configuration complete; ready for start up
proxy_1 | 2021/06/09 10:57:59 [emerg] 1#1: host not found in upstream "app" in /etc/nginx/conf.d/default.conf:9
proxy_1 | nginx: [emerg] host not found in upstream "app" in /etc/nginx/conf.d/default.conf:9
proxy_1 exited with code 1
我尝试将 libxml2 和 libxml2-dev 添加到 Dockerfile,但它仍然出现此错误。 以下是 dockerfiles 和 docker compose:
docker-compose.yml
version: '3.7'
services:
app:
build:
context: .
volumes:
- static_data:/vol/web
environment:
- SECRET_KEY=samplesecretkey123
- ALLOWED_HOSTS=127.0.0.1,localhost
proxy:
build:
context: ./proxy
volumes:
- static_data:/vol/static
ports:
- "8080:8080"
depends_on:
- app
volumes:
static_data:
.Dockerfile:
FROM python:3.8-alpine
ENV PATH="/scripts:${PATH}"
COPY ./requirements.txt /requirements.txt
RUN apk add --update --no-cache --virtual .tmp gcc libc-dev linux-headers libxml2 libxml2-dev libxslt-dev python3-dev gcc build-base libffi-dev
RUN pip install -r /requirements.txt
RUN apk del .tmp
RUN mkdir /app
COPY ./app /app
WORKDIR /app
COPY ./scripts /scripts
RUN chmod +x /scripts/*
RUN mkdir -p /vol/web/media
RUN mkdir -p /vol/web/static
RUN adduser -D user
RUN chown -R user:user /vol
RUN chmod -R 755 /vol/web
USER user
CMD ["entrypoint.sh"]
./proxy/Dockerfile
FROM nginxinc/nginx-unprivileged:1-alpine
COPY ./default.conf /etc/nginx/conf.d/default.conf
COPY ./uwsgi_params /etc/nginx/uwsgi_params
USER root
RUN mkdir -p /vol/static
RUN chmod 755 /vol/static
如果需要更多信息,请告诉我。正如我所说,docker 文件独立工作
【问题讨论】:
标签: django docker nginx docker-compose uwsgi