gpt4 book ai didi

django - 使用 docker 设置 django 和 angular

转载 作者:太空狗 更新时间:2023-10-29 19:32:47 24 4
gpt4 key购买 nike

我已经编写了我的第一个 Django 2.0 应用程序并使用 Angular 作为前端。

我的目录结构是这样的

app
|-- config # nginx configuration files
|-- nginx
|-- nginx.conf
|-- angular-app # frontend angular application
|-- angular.json
|-- package.json
|-- src # Django backend application
|-- myapp
|-- urls.py
|-- wsgi.py
|-- manage.py
|-- static_cdn # store and host static files and uploaded files
|-- static_root
|-- media_root
|-- .dockerignore
|-- docker-compose.yml
|-- Dockerfile
|-- requirements.txt
|-- start.sh

docker-compose.yml的内容

version: '3'

services:
nginx:
image: nginx:latest
container_name: "myapp-nginx"
ports:
- "10080:80"
- "10443:43"
volumes:
- .:/app
- ./config/nginx:/etc/nginx/conf.d
depends_on:
- web
web:
build: .
container_name: "myapp-dev"
command: ./start.sh
volumes:
- .:/app
ports:
- "9010:9010"
depends_on:
- db
db:
image: postgres
container_name: "myapp-postgres-db"

Dockerfile的内容

FROM ubuntu:18.04

FROM python:3
ENV PYTHONUNBUFFERED 1

ENV LC_ALL C.UTF-8
ENV LANG C.UTF-8

# -- Install Application into container:
RUN set -ex && mkdir /app

WORKDIR /app
ADD requirements.txt /app/

RUN pip install -r requirements.txt

# -- Adding dependencies:
ADD . /app/

start.sh的内容

#!/usr/bin/env bash

python3 src/manage.py makemigrations
python3 src/manage.py migrate
echo --: Running collectstatic
python3 src/manage.py collectstatic --noinput
echo --: Starting Gunicorn.
gunicorn --pythonpath src myapp.wsgi:application \
--bind 0.0.0.0:9010 \
--workers 3

这工作正常,可以在 http://127.0.0.1:9010 上访问 django 服务器

但是要运行 Angular 应用程序,我需要导航到 angular-app 然后运行 ​​ng server 来运行 Angular 应用程序。

我想将 angular-app 添加到 docker 设置中,这样 angular 应用程序也可以使用 docker-compose up 命令启动。

我想为每个应用程序使用不同的容器,以便我可以访问

# Django admin panel via
http://127.0.0.1:9010/admin/

# angular frontend
http://127.0.0.1:4010/

但两者都以单个 docker 命令开始。

最佳答案

因此,您的主要问题是您无法从 bash 文件中启动两个进程,因为 gunicornng server 都不会立即返回。他们停下来后返回。因此,这两个进程不会同时启动。

为了解决这个问题,我们需要像 supervisor 这样的东西,并用它运行 gunicornng server。要了解如何使用主管部署 gunicorn,请阅读 this

以类似的方式,您可以使用主管启动ng server

supervisor 所做的是它会在后台启动你的两个进程并立即返回。使您能够使用 start.sh 中的单个命令启动它们,因此使用 docker-compose up

对于无法编写完整的配置,我深表歉意。如果时间允许,我会写的。

Here's另一本有用的读物​​。

关于django - 使用 docker 设置 django 和 angular,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50799744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com