在单个存储库中的hub.docker.com上发布多个图像

时间:2019-01-31 11:29:14

标签: docker docker-compose dockerhub

我是Docker的新手,这让我很头疼。我完成了在Magento中使用docker-compose.yml链接多个图像的网站。

这是我的docker-compose.yml

version: '3'
services:
  web:
    image: webdevops/php-apache-dev:7.1
    container_name: web
    restart: always
    user: application
    environment:
    - WEB_ALIAS_DOMAIN=local.domain.com
    - WEB_DOCUMENT_ROOT=/app/pub
    - PHP_DATE_TIMEZONE=EST
    - PHP_DISPLAY_ERRORS=1
    - PHP_MEMORY_LIMIT=2048M
    - PHP_MAX_EXECUTION_TIME=300
    - PHP_POST_MAX_SIZE=500M
    - PHP_UPLOAD_MAX_FILESIZE=1024M
    volumes:
    - "./:/app:cached"
    ports:
    - "80:80"
    - "443:443"
    - "32823:22"
    links:
    - mysql
  mysql:
    image: mariadb:10
    container_name: mysql
    restart: always
    ports:
    - "52000:3306"
    environment:
    - MYSQL_ROOT_PASSWORD=root
    - MYSQL_DATABASE=magento
    volumes:
    - db-data:/var/lib/mysql
  phpmyadmin:
    container_name: phpmyadmin
    restart: always
    image: phpmyadmin/phpmyadmin:latest
    environment:
    - MYSQL_ROOT_PASSWORD=root
    - PMA_USER=root
    - PMA_PASSWORD=root
    ports:
    - "8080:80"
    links:
    - mysql:db
    depends_on:
    - mysql
volumes:
  db-data:
    external: false

然后docker-compose up -d --build。我在本地计算机上运行3个图像和3个容器。

我想将这些映像发布在hub.docker.com上,以便任何人都可以下载该映像并使所有容器运行。

还有一种方法可以将MySQL数据库添加到映像中,以便任何人都可以拥有与本地相同的运行网站?

1 个答案:

答案 0 :(得分:0)

请记住,您只能在Docker Hub上发布的是Docker映像;您无法发布容器,卷,Docker Compose YAML文件或其他工件。由于YAML文件是一个非常简单的文本文件,因此通常将其与README文件一起发布在GitHub上,以解释如何使用它。

您不需要推送phpmyadmin/phpmyadminmariadb映像,因为它们是标准的Docker Hub映像,因此只需要推送您的自定义映像。我强烈建议您删除将volumes:挂载到图像内容上的本地开发树,以验证该图像确实具有您所期望的内容。

  

是否有将mysql DB添加到映像的方法

不。各种标准Docker数据库映像的构建方式极难于构建包含预填充数据的映像。 Wordpress image with mysql data对该主题进行了很好的讨论,而MySQL Docker container is not saving data to new image对适当的问题进行了很好的分析。