问题
我有具有相同配置(PHP、MySQL、nginx)的 docker-compose
配置的项目。当我用 docker-compose up
运行一个项目时没有问题,但我需要在它们之间切换到每天几次进行开发。
问题:
- nginx同一端口的共享配置
- 默认数据库和连接(名称和用户)的共享配置
- 每个项目的域
我有
Docker for Mac
- 边缘
暂时
现在只需运行 up
和 down -v
每次。
大多数情况下,项目使用相同的 PHP 版本(应该)和 MySQL。
想法
负载平衡器
一个想法是在主文件夹 workspace
、docker-compose
中创建配置,其中包含一些负载均衡器,一些规则将为给定项目生成域,其中卷为主文件夹和一个 MySql 服务器和几个数据库 - 但这是原始想法。
问题
什么解决方案适用于特定情况?
- 提出任何结构或docker配置来解决独立配置?
更新
我的 docker-compose 文件
版本:'2.1'
为开发人员设置单一服务器
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
鉴于此,正如我所说,我希望运行具有不同 PHP 版本的项目。每个都有相同的 nginx
配置,然后需要以某种方式轻松同时运行它们。
了解@Vladimir Kovpak 的回答,但以这种方式手动工作会产生大量工作。 每个项目都有自己的 docker-compose 配置。
什么才是完美的
场景 1
- 进入项目,运行命令以通过 docker-compose 正确构建
- 可以做开发工作
- 可以通过一些动态域访问页面
- 运行命令关闭项目
场景 2
- 转到项目,运行命令以通过 docker-compose 正确构建
- 转到其他项目,运行命令以通过 docker-compose 正确构建
- 转到其他项目,运行命令以通过 docker-compose 正确构建
- 可以做开发工作
- 可以通过一些动态域访问页面
- 运行命令关闭项目
可以同时处理所有项目。 第一步是命题 - 任何初始化和关闭都可以,因为不痛苦 - 应该快速而简单。
最佳答案
我开始使用Portainer一旦容器设置好,它就会有一个网页,允许您启动、停止和管理正在运行的容器。
Portainer 本身是一个 docker 机器,所以我在机器启动时启动它,然后在 Web 浏览器中我可以看到我已经设置的 MySQL、PHP 和 phpmyadmin 容器。您可以单独启动和停止它们,也可以通过浏览器在机器中执行控制台。
浏览器还会向您显示机器使用统计信息、IP 地址和端口转发详细信息,因此您的浏览器中有大量有用的信息。
最后,它还允许你远程管理 docker 机器,所以我已经用 docker 设置了我的桌面,我可以在我的笔记本电脑上管理容器。
关于php - 使用 PHP、MySQL、nginx 同时运行多个 Dockerize 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45031943/