【问题标题】:Multiple Docker Containers with Same Images具有相同图像的多个 Docker 容器
【发布时间】:2022-01-19 17:26:24
【问题描述】:

我正在尝试使用我现有的 Magento 项目创建多个容器。

Task #1) 我已经按照markshust/docker-magento 成功地将现有项目移至 Docker。 一切都按预期工作得很好。但这仅适用于将单个 Magento 实例移动到 Docker

任务 #2) 我正在尝试在 Docker 上创建相同现有 Magento 项目的多个实例

我尝试使用不同的 --project-name 创建 2 个不同的 YML(以区分容器)。遵循与 Task #1 相同的步骤,并在第二个 YML 中更新了外部端口。但不幸的是,我现在无法运行任何容器。 无效!

当我尝试访问第一个 Magento 容器时,例如https://example.com:444/ 它在 system.log 中添加错误,奇怪的是,我的第二个 docker 容器的 system.log 中记录了相同的错误

我怀疑卷在我的情况下会产生问题(因为卷路径在两个 YML 中都相同),但我无法在这里找出确切的问题。在下面添加两个 YML

docker-compose.yml(位于 docker 根目录)

version: "3"

services:
  app:
    image: markoshust/magento-nginx:1.18-5
    ports:
      - "81:8000"
      - "444:8443"
    depends_on:
      - "db"
    volumes: &appvolumes
      - ~/.composer:/var/www/.composer:cached
      - ~/.ssh/id_rsa:/var/www/.ssh/id_rsa:cached
      - ~/.ssh/known_hosts:/var/www/.ssh/known_hosts:cached
      - appdata:/var/www/html
      - sockdata:/sock
      - ssldata:/etc/nginx/certs
    networks:
      - customNetwork

  phpfpm:
    image: markoshust/magento-php:7.4-fpm-11
    volumes: *appvolumes
    env_file: env/phpfpm.env
    networks:
      - customNetwork

  db:
    image: mariadb:10.4
    restart: on-failure
    command: --max_allowed_packet=256M
    ports:
      - "3307:3306"
    env_file: env/db.env
    volumes:
      - dbdata:/var/lib/mysql
    networks:
      - customNetwork

  redis:
    image: redis:5.0-alpine
    ports:
      - "6379:6379"
    networks:
      - customNetwork

  elasticsearch:
    image: markoshust/magento-elasticsearch:7.9.3-1
    ports:
      - "9201:9200"
      - "9301:9300"
    environment:
      - "discovery.type=single-node"
      ## Set custom heap size to avoid memory errors
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
      ## Avoid test failures due to small disks
      ## More info at https://github.com/markshust/docker-magento/issues/488
      - "cluster.routing.allocation.disk.threshold_enabled=false"
      - "index.blocks.read_only_allow_delete"
    networks:
      - customNetwork

volumes:
  appdata:
  dbdata:
  sockdata:
  ssldata:

networks:
  customNetwork:

docker-compose-second.yml(位于 docker 根目录)

version: "3"

services:
  app:
    image: markoshust/magento-nginx:1.18-5
    ports:
      - "82:8000"
      - "445:8443"
    depends_on:
      - "db"
    volumes: &appvolumes
      - ~/.composer:/var/www/.composer:cached
      - ~/.ssh/id_rsa:/var/www/.ssh/id_rsa:cached
      - ~/.ssh/known_hosts:/var/www/.ssh/known_hosts:cached
      - appdata:/var/www/html
      - sockdata:/sock
      - ssldata:/etc/nginx/certs
    networks:
      - customNetworkM2

  phpfpm:
    image: markoshust/magento-php:7.4-fpm-11
    volumes: *appvolumes
    env_file: env/phpfpm.env
    networks:
      - customNetworkM2

  db:
    image: mariadb:10.4
    restart: on-failure
    command: --max_allowed_packet=256M
    ports:
      - "3308:3306"
    env_file: env/db.env
    networks:
      - customNetworkM2

  redis:
    image: redis:5.0-alpine
    ports:
      - "6381:6379"
    networks:
      - customNetworkM2

  elasticsearch:
    image: markoshust/magento-elasticsearch:7.9.3-1
    ports:
      - "9202:9200"
      - "9302:9300"
    environment:
      - "discovery.type=single-node"
      ## Set custom heap size to avoid memory errors
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
      ## Avoid test failures due to small disks
      ## More info at https://github.com/markshust/docker-magento/issues/488
      - "cluster.routing.allocation.disk.threshold_enabled=false"
      - "index.blocks.read_only_allow_delete"
    networks:
      - customNetworkM2

volumes:
  appdata:
  dbdata:
  rabbitmqdata:
  sockdata:
  ssldata:

networks:
  customNetworkM2:

db.env(位于 [docker root]/env 目录)

MYSQL_HOST=db
MYSQL_ROOT_PASSWORD=magento
MYSQL_DATABASE=magento
MYSQL_USER=root
MYSQL_PASSWORD=magento

MYSQL_INTEGRATION_ROOT_PASSWORD=magento
MYSQL_INTEGRATION_DATABASE=magento_integration_tests
MYSQL_INTEGRATION_USER=root
MYSQL_INTEGRATION_PASSWORD=magento
MYSQL_INTEGRATION_HOST=db

我是 Docker 新手。需要一些帮助! 附言我在 Ubuntu 18.04 和 Magento 2.4.3-P1 上使用 docker & docker-compose

【问题讨论】:

    标签: docker magento docker-compose


    【解决方案1】:

    我认为查看易于理解的示例可以为您提供最好的图片。

    您想要做的是完全有效的,图像应该是您需要运行的任何东西,无需配置。

    要生成配置,您可以:

    a) 卷安装

    在容器启动期间使用卷并挂载文件 docker run -v my.ini:/etc/mysql/my.ini percona(与 docker-compose 类似)

    b) 基于入口点的配置(生成)

    c) 派生图像

    也许是为了“完整性”,图像派生策略,所以你有一个名为“myapp”的基础图像,并为安装 X 创建一个新图像

    来自我的应用

    复制我的.ini /etc/mysql/my.ini

    复制 application.yml /var/app/config/application.yml

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-23
      • 2016-12-23
      • 1970-01-01
      • 2019-12-28
      • 2023-03-25
      • 2020-02-12
      • 2021-03-26
      相关资源
      最近更新 更多