我想将我的服务部署到docker.
我的服务是使用python + django和django-channels开发的
?? myproject
??? myproject
? ??? settings.py
? ??? urls.py
? ??? asgi.py
? ??? ...
??? collected_static
? ??? js
? ??? css
? ??? ...
??? nginx
? ??? Dockerfile
? ??? service.conf
??? requirements.txt
??? manage.py
??? Dockerfile
??? docker-compose.yml
myproject/Dockerfile:
FROM python
ENV PYTHONUNBURRERED 1
RUN mkdir -p /opt/myproject
WORKDIR /opt/myproject
ADD . /opt/myproject
RUN pip install -r requirements.txt
RUN python manage.py migrate
Run Code Online (Sandbox Code Playgroud)
MyProject的/泊坞窗,compose.yml:
version: '2'
services:
nginx:
build: ./nginx
networks:
- …Run Code Online (Sandbox Code Playgroud) 我有在docker容器中运行的django应用程序.最近我发现我需要在我的应用程序中添加websockets接口.我在nginx和redis后面使用带有daphne的通道作为缓存.问题是我必须在1个容器中运行django worker和daphne.在容器启动时运行的脚本:
#!/usr/bin/env bash
python wait_for_postgres.py
python manage.py makemigrations
python manage.py migrate
python manage.py collectstatic --no-input
python manage.py runworker --only-channels=http.* --only-channels=websocket.* -v2
daphne team_up.asgi:channel_layer --port 8000 -b 0.0.0.0
Run Code Online (Sandbox Code Playgroud)
但它依赖于经营一名工人.我试过nohup,但它似乎不起作用.如果我直接从带有docker exec的容器运行daphne一切正常.