我需要用docker将Django Web项目打包。我将项目分为仪表板、api服务器和数据库。当我键入docker compose up
时,它打印api服务器退出,代码为0
,api服务器容器退出(0),并且我键入docker日志api服务器
,它返回空,但其他容器正常。我不知道如何检查这个问题。
api服务器目录结构如下
api-server
server/
Dockerfile
requirements.txt
start.sh
...
...
一些yml内容如下所示
dashboard:
image: nginx:latest
container_name: nginx-dashboard
volumes:
- /nginx/nginx/default:/etc/nginx/conf.d/default.conf:ro
- /nginx/dist:/var/www/html:ro
ports:
- "80:80"
depends_on:
- api-server
api-server:
build: /api-server
container_name: api-server
volumes:
- /api-server:/webapps
ports:
- "8000:8000"
depends_on:
- db
db:
image: postgres
container_name: Postgres
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=postgres
ports:
- "5432:5432"
api服务器的一些Dockerfile内容如下
FROM python:3.6
ENV PYTHONUNBUFFERED 1
RUN mkdir /webapps
WORKDIR /webapps
RUN apt-get clean && apt-get update && apt-get upgrade -y && apt-get install -y python3-pip libpq-dev apt-utils
COPY ./requirements.txt /webapps/
RUN pip3 install -r /webapps/requirements.txt
COPY . /webapps/
CMD ["bash","-c","./start.sh"]
开始具体如下:
#!/usr/bin/env bash
cd server/
python manage.py runserver 0.0.0.0:8000
键入docker组合
结果如下
root@VM:/home/test/Documents/ComposeTest# docker-compose up
Creating network "composetest_default" with the default driver
Creating Postgres ... done
Creating api-server ... done
Creating dashboard ... done
Attaching to Postgres, api-server, dashboard
Postgres | The files belonging to this database system will be owned by user "postgres".
Postgres | This user must also own the server process.
...
...
api-server exited with code 0
api-server exited with code 0
docker日志api服务器
为空
如果你们能告诉我如何检查这个问题,我将非常感激,最好提供一个解决方案。
您已经在构建期间将api服务器
复制到Dockerfile,这应该可以正常工作,但在Docker compose中,它会覆盖所有pip包和代码。
volumes:
- /api-server:/webapps
从Docker compose中删除卷,它应该可以工作。
第二件事是设置bash脚本的权限。
COPY . /webapps/
RUN chmod +x ./start.sh
第三件事,你确实需要使用bash运行python,因为在bash中没有CMD不能执行的东西,所以为什么不作为CMD呢?
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
问题内容: 每当我运行任何代码时,控制台始终以结尾。 例如,如果我只打印(“ hellow”): 有什么办法可以使输出“成螺旋形”? 问题答案: 您知道它不是输出的一部分吗?这只是IDE控制台提供的其他信息。实际程序只是按预期输出。 这样说意味着一切正常。如果程序中发生异常,否则将使用非零参数生成,IDE将通知您有关此信息,这是有用的调试信息。 在生产中,您不应该从IDE运行Python程序,因此
我正在研究lib,它使用了很多文件系统函数。 我想要的是,我的函数根据errno返回各种错误代码(而不仅仅是-1作为错误),以防文件系统函数失败。 虽然我可以直接使用errno值,但我希望在函数,错误代码和系统errno之间创建一些抽象层(例如,我的错误值从-1000开始,并且是负值,而errno值是正值)。 我的问题是什么是最好的实现方式。 现在我看到两种可能的解决方案: 使用带有错误代码的枚举
问题内容: 我正在尝试使用docker-compose服务启动容器,但不幸的是, 容器退出了代码0 。容器的建立要归功于.tar.gz归档文件中的存储库。这个档案是一个Centos VM。 我想从同一档案创建6个容器。我想创建一个docker-compose.yml文件,而不是键入6次docker命令,我可以在其中总结其命令和标签。 我已经开始写docker-compose.yml文件只是为了创建
我有问题与我的Xamarin窗体项目与ProGuard,我有以下错误:java.exe"退出与代码1 和多个警告,如:okio。Okio:找不到引用的类java.nio.file.路径 我尝试过许多解决方案,例如: 下载最新版本的ProGuard并将其替换到特定文件夹中。 设置我的Java最大堆大小为1G 创建自己的proguard.cfg并将构建操作设置为ProGuard dConfigurat
当我在PyCharm中手动停止脚本时,进程以退出代码137结束。但是我没有停止剧本。还有出口代码137。有什么问题? Python版本是3.6,在运行xgboost.train()方法时进程完成。