我创建了Dockerfile和docker-compose,但是当我写docker-compose up
Dockerfile
FROM ubuntu:18.04
RUN apt-get -y update && apt-get -y upgrade
RUN apt-get -y install python3.8
RUN apt-get -y install python3-pip
RUN apt -y install apache2
RUN apt-get install -y apt-utils vim curl apache2 apache2-utils
RUN apt-get -y install python3 libapache2-mod-wsgi-py3
RUN pip3 install --upgrade pip
COPY ./requirements.txt ./requirements.txt
RUN apt-get -y install python3-dev
RUN apt-get -y install python-dev default-libmysqlclient-dev
RUN pip3 install -r ./requirements.txt
COPY ./apache.conf /etc/apache2/sites-available/000-default.conf
RUN mkdir /var/www/api/
COPY ./project/. /var/www/api/
WORKDIR /project/
Docker-compose
version: "3"
services:
django-apache2:
container_name: "django-apache2"
build: .
ports:
- "8005:80"
答案 0 :(得分:0)
您的容器缺少可运行的内容。您需要向您的Dockerfile添加一条CMD
或ENTRYPOINT
指令。
这就是为什么您看到这样的消息的原因,这不是错误。该消息告诉您容器django-apache2
已正确完成(退出状态0),这是因为您正在运行基本映像ubuntu
,该映像不执行任何操作。
答案 1 :(得分:0)
首先,我们需要了解Docker容器运行单个命令。只要启动命令的进程正在运行,该容器就会一直在运行。该过程完成并退出后,容器将停止。
有了这种理解,我们可以假设您的情况正在发生。当您启动服务时,没有命令。此时,Docker容器已停止,因为该进程已退出(状态为0)。
因此,您需要添加可在docker上继续运行的命令。
检查此链接以获取更多信息Here。
答案 2 :(得分:0)
此方法的问题归因于www-data apache2用户。如果您从Dockerfile安装python软件包,将为超级用户安装它们,而www-data apache用户将无法访问这些软件包。 我尝试使用pip创建新的venv,并且发生相同的问题。从超级用户在python虚拟环境中安装的软件包未安装在venv文件夹内。 我在github中创建了一个新的存储库,解释了使用miniconda3作为python软件包管理器以及使用sudo -u以不同用户身份运行命令的不同方法。 我正在尝试使用pip解决此问题。更改将发布在存储库中。
我希望这对您有用。