【问题标题】:How to properly dockerize a mean stack application?如何正确对接平均堆栈应用程序?
【发布时间】:2018-12-07 08:44:00
【问题描述】:

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

【问题讨论】:

    标签: mongodb express docker mean angular6


    【解决方案1】:

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

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

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

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

    管理和定义一些用于 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
        ...
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-09-05
        • 1970-01-01
        • 2017-03-21
        • 2017-11-28
        • 2018-02-15
        • 2018-07-13
        • 2016-11-25
        相关资源
        最近更新 更多