首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有相同图像的多个码头集装箱

具有相同图像的多个码头集装箱
EN

Stack Overflow用户
提问于 2021-12-16 16:02:50
回答 2查看 177关注 0票数 0

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

任务1)通过跟踪标记/码头-magento. ,成功地将现有的项目转移到了Docker,一切都像预期的那样工作得很好。但这只适用于将单个Magento实例迁移到Docker

任务# 2) 我试图以类似的方式在Docker上创建同一个现有Magento项目的多个实例

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

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

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

docker-compose.yml (放置在docker根目录下)

代码语言:javascript
复制
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 -复合-substd.yml(放置在docker根目录下)

代码语言:javascript
复制
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 (放置在码头根目录/env目录)

代码语言:javascript
复制
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

我是码头新来的。需要帮助!我在Ubuntu 18.04和Magento 2.4.3-P1上使用停靠和对接-构图

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-23 08:27:52

问题已经解决了。请遵照以下指示:

创建文件docker-compose-instance1.yml

代码语言:javascript
复制
version: '3'

services:
  magento:
    image: folio3ecommerce/magento-php-apache:2.4.5
    restart: on-failure
    ports:
      - "${APP_PORT}:80"
    env_file: env/phpfpm.env
    links:
      - db
      - redis
      - elasticsearch
    depends_on:
      - db
    networks:
      - customNetwork
    
  db:
    image: mariadb:10.4
    restart: on-failure
    command: --max_allowed_packet=256M
    ports:
      - "${DB_PORT}:3306"
    env_file: env/db.env
    volumes:
      - dbdata:/var/lib/mysql
    networks:
      - customNetwork

  redis:
    image: redis:5.0-alpine
    restart: on-failure
    ports:
      - "${REDIS_PORT}:6379"
    networks:
      - customNetwork

  elasticsearch:
    image: elasticsearch:7.16.2
    restart: on-failure
    ports:
      - "${ES_PORT}:9200"
      - "${ES_SSL_PORT}:9300"
    volumes:
      - elasticsearchdata:/var/lib/elasticsearch
    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:
  redisdata:
  elasticsearchdata:

networks:
  customNetwork:

执行以下命令,通过上述YML文件为instance1创建容器

代码语言:javascript
复制
docker-compose -f docker-compose-instance1.yml -p "instance1" up -d --build

类似地,您可以使用docker-复合-instance2.yml、docker-复合-instance3.yml等创建多个实例。

您可以使用来自码头集线器https://hub.docker.com/r/folio3ecommerce/magento-php-apache/tags的以下图像

此映像为Magento实例提供了示例数据(v2.4.3、v2.4.4、v2.4.5)

我希望这能帮到你!

票数 0
EN

Stack Overflow用户

发布于 2022-01-07 02:09:58

我认为看一些容易理解的例子可以给你最好的印象。

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

要生成配置,您可以:

( a)容积安装

在容器启动过程中使用卷并挂载文件,运行-v my.ini:/etc/mysql/my.ini percona (与docker -组合类似)

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

( c)衍生图像

可能是为了“完整性”,即映像派生策略,因此您有一个名为"myapp“的基本映像,而对于安装X,则创建了一个新映像。

从我的应用程序

复制my.ini /etc/mysql/my.ini 复制application.yml /var/app/config/application.yml

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70382113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档