我是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数据库添加到映像中,以便任何人都可以拥有与本地相同的运行网站?
答案 0 :(得分:0)
请记住,您只能在Docker Hub上发布的是Docker映像;您无法发布容器,卷,Docker Compose YAML文件或其他工件。由于YAML文件是一个非常简单的文本文件,因此通常将其与README文件一起发布在GitHub上,以解释如何使用它。
您不需要推送phpmyadmin/phpmyadmin
或mariadb
映像,因为它们是标准的Docker Hub映像,因此只需要推送您的自定义映像。我强烈建议您删除将volumes:
挂载到图像内容上的本地开发树,以验证该图像确实具有您所期望的内容。
是否有将mysql DB添加到映像的方法
不。各种标准Docker数据库映像的构建方式极难于构建包含预填充数据的映像。 Wordpress image with mysql data对该主题进行了很好的讨论,而MySQL Docker container is not saving data to new image对适当的问题进行了很好的分析。