Php 具有默认轮毂图像或一个自定义单堆栈的Docker灯

Php 具有默认轮毂图像或一个自定义单堆栈的Docker灯,php,mysql,docker,docker-compose,Php,Mysql,Docker,Docker Compose,互联网上有一些教程,其中一些使用docker compose,因此结合了PHP、MariaDB和PHPMyAdmin,所有这些都来自hub.docker.com上的原始项目。此方法非常快速且易于配置。使用一个yml文件,整个lamp服务器基本上可以按要求运行 version: '3' services: php-apache: image: php:7.3.2-apache-stretch ports: - 80:80

互联网上有一些教程,其中一些使用docker compose,因此结合了PHP、MariaDB和PHPMyAdmin,所有这些都来自hub.docker.com上的原始项目。此方法非常快速且易于配置。使用一个yml文件,整个lamp服务器基本上可以按要求运行

version: '3'
services:
    php-apache:
        image: php:7.3.2-apache-stretch
        ports:
            - 80:80
        volumes:
            - D:\test\src:/var/www/html
        links:
            - 'mariadb'

    mariadb:
        image: mariadb:10.1
        volumes:
            - mariadb:/var/lib/mysql
        environment:
            TZ: "Europe/Rome"
            MYSQL_ALLOW_EMPTY_PASSWORD: "no"
            MYSQL_ROOT_PASSWORD: "rootpwd"
            MYSQL_USER: 'testuser'
            MYSQL_PASSWORD: 'testpassword'
            MYSQL_DATABASE: 'testdb'

    phpmyadmin:
        image: phpmyadmin/phpmyadmin
        container_name: phpmyadmin
        environment:
            PMA_HOST: "mariadb"
        restart: always
        ports:
         - 8181:80
        volumes:
         - /sessions
        links:
         - 'mariadb'
volumes:
    mariadb:

其他人创建一个DOCKERFILE,并将所有apt get命令放在该文件中,比如来自的这个文件

来自ubuntu:16.04的

维护者
LABEL Description=“基于Ubuntu 16.04 LTS的尖端灯堆栈。包括.htaccess支持和流行的PHP7功能,包括composer和mail()函数。”\
License=“Apache许可证2.0”\
用法=“docker run-d-p[主机WWW端口号]:80-p[主机DB端口号]:3306-v[主机WWW文档根]:/var/WWW/html-v[主机DB文档根]:/var/lib/mysql fauria/lamp”\
Version=“1.0”
运行apt获取更新
运行apt获取升级-y
复制debconf.selections/tmp/
运行debconf set selections/tmp/debconf.selections
运行apt get install-y zip解压
运行apt获取安装-y\
php7.0\。。。
第一个看起来简单得多,第二个有一些冗余(Debian用于PHP,ubuntu用于MariaDB,PHP alpine用于PHPMyAdmin)

Docker现在运行3台服务器吗?一个用于PHP,一个用于数据库,一个用于phpmyadmin?这感觉像是在浪费资源,不是吗


哪种方法是典型的惯例

根据官方文件:“通常建议您通过每个容器使用一项服务来分离关注区域”,这将更易于维护、扩展或更新,而不会影响任何其他服务

在docker中,这些实例称为
服务
,因此docker将每个组件作为服务运行

如果你需要了解更多,你也可以阅读更多


关于资源使用,它不会像您想象的那样浪费,因为这是将虚拟机与docker容器进行比较时的优势之一,因为它使用相同的主机内核,并且不会像虚拟机那样专用特定的资源,因为它们运行一个完整的独立操作系统

我想这确实是一种更好的方式人们可以信赖官方形象。此外,我想它不需要太多的资源,因为所有东西都非常轻量级。感谢您解释资源部分:)@ptmr.io如果这个答案对您有效,请不要忘记将问题标记为已回答。或者如果你需要其他解释,让我解释know@Mosetafa侯赛因:当然,我会等1到2天,等待可能的其他意见,但你的意见似乎相当成功:)拥有单独容器的优势(除了最初的原则外)是你可以混合和匹配PHP和数据库的版本。您可以轻松地安装2个PHP版本,并并行或交换运行它们。与数据库版本相同-为新版本创建一个新容器,并对旧版本进行测试。我发现一个非常有用的docker容器,它还允许您通过web界面管理它们。我通常不运行phpmyadmin/redis/rabbitmq容器,除非我需要它们。但可以通过网页轻松启动它们。
FROM ubuntu:16.04
MAINTAINER Fer Uria <fauria@gmail.com>
LABEL Description="Cutting-edge LAMP stack, based on Ubuntu 16.04 LTS. Includes .htaccess support and popular PHP7 features, including composer and mail() function." \
    License="Apache License 2.0" \
    Usage="docker run -d -p [HOST WWW PORT NUMBER]:80 -p [HOST DB PORT NUMBER]:3306 -v [HOST WWW DOCUMENT ROOT]:/var/www/html -v [HOST DB DOCUMENT ROOT]:/var/lib/mysql fauria/lamp" \
    Version="1.0"

RUN apt-get update
RUN apt-get upgrade -y

COPY debconf.selections /tmp/
RUN debconf-set-selections /tmp/debconf.selections

RUN apt-get install -y zip unzip
RUN apt-get install -y \
    php7.0 \ ...