如何将Angular项目添加到Django和Docker

我想用Django项目添加到Docker的Angular 4项目? 我的文件结构看起来就是这样的: DockerContainer

 Backend Dockerfile Frontend docker-compose.yml requirements.txt 

我想在Frontend目录下创buildAngular 4项目。 我可以使用ng new my-app来做到这一点,但接下来我该怎么做? 这是我docker-compose.yml

 version: '3' services: db: image: postgres django: build: . command: python3 Backend/manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8000:8000" depends_on: - db 

Dockerfile

 FROM python:3.6.1 ENV PYTHONUNBUFFERED 1 RUN mkdir /code WORKDIR /code ADD requirements.txt /code/ RUN pip install -r requirements.txt ADD . /code/ 

目前在主目录中的文件结构与您的build议看起来是这样的:

 ├── Backend │  ├── AI │  │  ├── __init__.py │  │  ├── __pycache__ │  │  │  ├── __init__.cpython-36.pyc │  │  │  ├── settings.cpython-36.pyc │  │  │  ├── urls.cpython-36.pyc │  │  │  └── wsgi.cpython-36.pyc │  │  ├── settings.py │  │  ├── urls.py │  │  └── wsgi.py │  └── manage.py ├── Dockerfile ├── Frontend │  └── angularProject │    └── all files in my angular project ├── docker-compose.yml └── requirements.txt 

Angular 4项目只是HTML和JavaScript(据我所知)。 一般来说,我们将构build应用程序,然后从Web服务器(例如Apache HTTPD的nginx)提供它。 我决定基于最近的Docker特性为多阶段构build做一个Angular 4 Docker镜像的例子。

这个例子是在https://gist.github.com/andyshinn/de65b71a7b50a0e5a73732c69f1a3d35 。 假设您的Angular 4应用程序代码根位于Frontend ,您可以将此Dockerfilenginx.conf复制到Frontend文件夹。 然后,你可以添加一个新的服务到你docker-compose.yml来构build和运行它。 这是一个例子:

 version: '3' services: db: image: postgres django: build: . command: python3 Backend/manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8000:8000" depends_on: - db angular: build: Frontend/angularProject ports: - "8010:80" depends_on: - django