为什么我的 docker 容器没有控制台输出?

时间:2021-03-24 14:21:10

标签: python docker

我有一个应用程序,它由一个带有 redis 实例的 docker 容器、另一个带有rabbitmq 服务器的 docker 容器和第三个容器组成,我试图在其中启动一些可以与 redis 交互的 celery 工作器和rabbitmq 容器。我正在通过 rest api 启动和停止这些工作人员,并检查我是否能够在我的主机上执行此操作。但是,在将设置移至 docker 后,工作人员似乎并未按预期行事。而在我的主机(Windows 10)上,我能够看到来自其余 api 的回复和来自工作人员的控制台输出,我只能看到来自其余 api(日志消息)的响应,而没有控制台输出。工作人员似乎也没有访问 redis 和 rabbitmq 实例。

我的 docker 容器是从 python3.6 (linux) 基础镜像构建的。我已经检查过一切都安装正确,并且没有错误日志。我使用以下 dockerfile 构建图像:

FROM python:3.6

WORKDIR /opt

# create a virtual environment and add it to PATH so that it is applied for 
# all future RUN and CMD calls
ENV VIRTUAL_ENV=/opt/venv
RUN python3 -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"

# install msodbcsql17
RUN apt-get update \
    && apt-get install -y curl apt-transport-https gnupg2 \
    && curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - 
\
    && curl https://packages.microsoft.com/config/debian/9/prod.list > 
/etc/apt/sources.list.d/mssql-release.list \
    && apt-get update \
    && ACCEPT_EULA=Y apt-get install -y msodbcsql17 mssql-tools


# Install Mono for pythonnet.
RUN apt-get update \
&& apt-get install --yes \
    dirmngr \
    clang \
    gnupg \
    ca-certificates \
    # Dependency for pyodbc.
    unixodbc-dev \
    && apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 
    3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF \
    && echo "deb http://download.mono-project.com/repo/debian 
    stretch/snapshots/5.20 main" | tee /etc/apt/sources.list.d/mono-official- 
    stable.list \
    && apt-get update \
    && apt-get install --yes \
   
    mono-devel=5.20\* \
    && rm -rf /var/lib/apt/lists/*

COPY requirements.txt .
COPY src ./src
COPY setup.py ./setup.py
COPY config.json ./config.json
COPY Utility.dll ./Utility.dll
COPY settings_docker.ini ./settings.ini
COPY config.json ./config.json
COPY sql_config.json ./sql_config.json

RUN python3 -m venv $VIRTUAL_ENV \
# From here on, use virtual env's python.
&& venv/bin/pip install --upgrade pip \
&& venv/bin/pip install --no-cache-dir --upgrade pip setuptools wheel \

&& venv/bin/pip install --no-cache-dir -r requirements.txt \
# Dependency for pythonnet.
&& venv/bin/pip install --no-cache-dir pycparser \
&& venv/bin/pip install -U  --no-cache-dir "pythonnet==2.5.1" \
# && python -m pip install --no-cache-dir "pyodbc==4.0.25" "pythonnet==2.5.1"

EXPOSE 8081

cmd python src/celery_artifacts/docker_workers/worker_app.py

然后用这个命令运行它:

docker run --name app -p 8081:8081 app

然后我将容器附加到与其他 2 个相同的桥接网络:

docker network connect my_network app

有没有办法从我的容器中看到与主机上相同的控制台输出?

0 个答案:

没有答案
相关问题