首页 > 解决方案 > Docker 在 Windows 上运行,并且仅在两个 Linux 系统之一上运行

问题描述

我有一个构建的 docker 映像,可以按预期在我的 Windows 笔记本电脑上运行。当我将其复制并加载到我的两个 Linux 系统之一时,我在运行 docker 日志时收到此错误:

错误:'docker/semantic_search_django/gunicorn.conf' 不存在

当我检查 Windows 上正在运行的容器时,我可以看到那个“丢失”的文件!此外,如果我将相同的 docker 映像复制并加载到我的第二个 Linux 系统,它会按预期运行。

这个问题今天才发生。在过去的几个月里,直到今天,我在所有 3 个系统上都取得了成功。任何建议将不胜感激。两个 Linux 系统都运行 Ubuntu 18.04.5 LTS。

我已经尝试重命名图像,我已经停止并启动了 docker 守护进程,我什至重新启动了两个 Linux 机器。

以下是我使用的命令:

docker pull my.artifactory.com/ciee_ssrdjango

docker-compose up -d

我的 docker-compose.yml

version: "3.8"
services:
  web:
     image: m.artifactory.com/ciee_ssrdjango
     env_file:
       - proxy.env
       - django.env
     container_name: ciee_ssrdjango
     volumes:
       - query-results-volume:/code
     expose:
       - "${SSRDJANGO_PORT}"
     extra_hosts:
       dbhost: ${POSTGRES_DOCKER_IP}
     depends_on:
       - db
     networks:
       - ssr_network
networks:
  ssr_network:
    external: true
volumes:
  postgresql-volume:
    external: true
  query-results-volume:
    external: true

我的 Dockerfile:

FROM ubuntu:18.04
ENV PYTHONUNBUFFERED 1
ENV PYTHONDONTWRITEBYTECODE 1
COPY ./requirements.txt /requirements.txt
#prevents being asked to set TZ
ARG DEBIAN_FRONTEND=noninteractive
RUN apt update -y && \
    apt -y upgrade && \
    apt install -y python3-pip && \
    apt install -y build-essential libssl-dev libffi-dev libpq-dev python3-dev && \
    apt install -y software-properties-common python3.8

RUN python3 -m pip install --upgrade pip setuptools wheel

ENV TZ=US/Eastern
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt update -y & apt install gcc libxml2-dev libxslt-dev postgresql postgresql-contrib postgresql-plpython-10 --no-install-recommends unixodbc-dev unixodbc libpq-dev -y

RUN mkdir /code # && mkdir /code/ciee
RUN pip install nltk
RUN export PATH=~/.local/bin:$PATH
RUN pip install -r /requirements.txt
COPY . /code/
WORKDIR /code
RUN useradd -m user && chmod 777 /home/user && mkdir /code/query_results && chmod 777 /code/query_results
USER user
CMD ["gunicorn", "semantic_search_django.wsgi:application", "--config", "docker/semantic_search_django/gunicorn.conf", "--keep-alive", "600"]

事情是这样的,我已经成功使用这些文件和命令好几个星期了。

标签: docker

解决方案


我可以做一个假设。您正在将 query-results-volume 挂载到容器中的 /code 目录中,并且您的 conf 文件位于其中。卷在容器之间持续存在——这就是卷的本质。因此,不知何故,有问题的文件(甚至文件夹)已从问题机器上的卷中删除,现在容器无法获取它。


推荐阅读