使用PHP,MySQL,nginx同时运行多个Dockerize项目

tim*_*Tao 6 php mysql nginx docker docker-compose

问题

我有docker-compose配置相同的项目(PHP,MySQL,nginx).当我运行一个项目时docker-compose up没有问题,但我需要每天在它们之间切换几次以进行开发.

问题:

  • nginx的相同端口的共享配置
  • 共享默认数据库和连接的配置(名称和用户)
  • 每个项目的域名

我有

  • Docker for Mac - 边缘

目前

现在只需运行up,down -v每次.大多数情况下,项目都是相同的PHP版本(应该是)和MySQL.

思路

负载均衡器

其中一个想法是在主文件夹中创建配置workspace,docker-compose一些负载均衡器将是一些规则将为给定项目生成域,其中卷为主文件夹,并且具有一个MySql服务器和少量DB - 但这是原始想法.

什么解决方案适用于特定情况?

  • 提出任何结构或泊坞窗配置来解决独立配置?

更新

我的docker-compose文件

版本:'2.1'

dev的单服务器设置

services:
  app:
    image: ${PHP_IMAGE}
    volumes:
     - ${COMPOSE_DIR}/../../:/var/www:cached
     - ${COMPOSER_HOME}:/root/.composer:cached
    depends_on:
     - db
    environment:
     - SYMFONY_ENV=${SYMFONY_ENV-prod}
     - SYMFONY_DEBUG
     - SYMFONY_HTTP_CACHE
     - SYMFONY_HTTP_CACHE_CLASS
     - SYMFONY_TRUSTED_PROXIES
     - DATABASE_USER
     - DATABASE_PASSWORD
     - DATABASE_NAME
     - DATABASE_HOST=db

  web:
    image: ${NGINX_IMAGE}
    volumes_from:
     - app:ro
    ports:
     - "8080:80"
    environment:
     - SYMFONY_ENV=${SYMFONY_ENV-prod}
     - MAX_BODY_SIZE=20
     - FASTCGI_PASS=app:9000
     - TIMEOUT=190
     - DOCKER0NET
    command: /bin/bash -c "cd /var/www && cp -a doc/nginx/ez_params.d /etc/nginx && bin/vhost.sh --template-file=doc/nginx/vhost.template > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"

  db:
    image: ${MYSQL_IMAGE}
    volumes:
     - ${COMPOSE_DIR}/entrypoint/mysql:/docker-entrypoint-initdb.d/:ro
    environment:
     - MYSQL_RANDOM_ROOT_PASSWORD=1
     - MYSQL_USER=$DATABASE_USER
     - MYSQL_PASSWORD=$DATABASE_PASSWORD
     - MYSQL_DATABASE=$DATABASE_NAME
     - TERM=dumb
Run Code Online (Sandbox Code Playgroud)

鉴于此,正如我所说,我希望运行具有不同PHP版本的项目.每个都有相同的nginx配置,然后需要以某种方式有可能轻松和同时运行它们.

理解@Vladimir Kovpak的答案,但手动这种方式会产生很多工作.每个项目都有自己的docker-compose配置.

什么是完美的

场景1

  • 转到项目,运行命令以通过docker-compose正确构建
    • 可以做开发工作
    • 可以通过一些动态域访问页面
  • 运行命令关闭项目

情景2

  • 转到项目,运行命令以通过docker-compose正确构建
  • 转到其他项目,运行命令以通过docker-compose正确构建
  • 转到其他项目,运行命令以通过docker-compose正确构建
    • 可以做开发工作
    • 可以通过一些动态域访问页面
  • 运行命令关闭项目

可以同时使用所有项目.第一步是提议 - 任何初始化和结束都没关系,因为不痛苦 - 应该快速而简单.

Nig*_*Ren 4

我开始使用Portainer,一旦容器设置完毕,它就会有一个网页,允许您启动、停止和管理正在运行的容器。

Portainer 本身是一台 docker 机器,所以我在机器启动时启动它,然后在 Web 浏览器中我可以看到我已经设置的 MySQL、PHP 和 phpmyadmin 容器。您可以单独启动和停止它们,还可以通过浏览器在计算机中执行控制台。

该浏览器还向您显示机器使用情况统计信息、IP 地址和端口转发详细信息,因此浏览器中包含大量有用信息。

最后,它还允许您远程管理 docker 机器,因此我使用 docker 设置了我的桌面,并且可以管理笔记本电脑上的容器。