我有一个由图像分析模型和 2 个脚本文件组成的 python 应用程序。在 Main.py 中,我让 XMLRPC 服务器永远运行并监听客户端。
if __name__ == "__main__":
server = SimpleXMLRPCServer(("0.0.0.0", 8888))
print("Listening on port 8888...")
server.register_function(result, "result")
server.serve_forever()
我的 Dcokerfile 是:
# Start with NVIDIA's CUDA and cuDNN base image.
FROM nvidia/cuda:8.0-cudnn5-devel-ubuntu16.04
# Argument: the username & password.
ARG username
ARG user_password
# Update the system.
RUN echo "debconf debconf/frontend select Noninteractive" | debconf-set-selections
RUN apt-get update
RUN apt-get upgrade --assume-yes
...... bla bla bla
WORKDIR /home/${username}
# Copy the current directory contents into the container at /home/${username}
ADD . /home/${username}
...... bla bla bla
# Expose the ports and start the ssh daemon as entry point.
USER root
EXPOSE 22 6006 8888
ENTRYPOINT ["/usr/sbin/sshd", "-D"]
当我添加 CMD 来运行我的 Main.py 容器不起作用时,它立即退出。我能够运行此容器的最佳实践是什么?我正在为 Linux Ubuntu 使用 azure Data Science Virtual Machine。
我构建了我的 Dockerfile:
docker build . --tag img_processing:V1 --build-arg "username=blabla" --build-arg "user_password=blabla"
我运行我的容器:
docker run -d -p 4000:8888 img_processing
目前我使用docker exec -it my-app-container bash
并在我的容器内部管理东西并运行python Main.py &
以在后台运行脚本,我认为这不是一个好方法。特别是我必须找到一种方法来放大和处理 3000 张图像。所以每个容器都需要有相同的设置。
任何想法?