如何正确地 dockerize 平均堆栈应用程序?

How to properly dockerize a mean stack application?

我正在开发一个平均堆栈应用程序(运行 angular 6,而不是 angular js)。我被要求对它进行 docker 化,因为我不是 Docker 方面的专家,我想知道什么是最好的选择: - 创建单独的容器,一个用于数据库、express 应用程序和 angular 应用程序 - 将整个堆栈部署在一个容器中

运行 单独的容器是通过 docker-compose 实现的方法,因此您只需一个命令即可启动所有必要的容器

简单教程:https://codereviewvideos.com/course/docker-tutorial-for-beginners/video/docker-compose-tutorial

我建议您为每个应用程序使用一个容器:

  • 1 个容器 angular
  • 1 个应用容器
  • 1 个数据库容器。

再为每个定义一个Dockerfile,你可以定义一个docker-compose.yml可以构建和部署所有的

最后,在这个 docker-compose 文件中,您可以挂载卷以存储外部容器数据库数据(例如:/var/lib/mysql for mysql db),因为当容器退出时,所有从容器开始的新信息都丢失了。

为数据库参数管理和定义一些 ARGS / ENV。

docker-compose.yml 示例:

version: '3.6'

services: 
  mysql:
    container_name: your_db_container
    restart: always
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: 'test_pass' # TODO: Change this
      MYSQL_USER: 'test'
      MYSQL_PASS: 'pass'
    volumes:
      - /tmp/your_db_dir:/var/lib/mysql
    ports:
      - "3306:3306"
  your_app:
    build:
      context: ./your_folder_dockerfile
      dockerfile: Dockerfile_app
    ...

  angular_serv:
    image: angular-cli-docker-ootb:latest
    ...