我尝试使用Docker构建了PHP学习环境
首先
大家好,你们觉得设置环境是不是很麻烦?
我觉得很麻烦。
我曾有一个学习PHP的机会,但因为不想搭建环境,所以决定使用Docker。
要做的事情 zuò de shì
在《PHP7+MariaDB/MySQL主要笔记》一书中,我们使用了一个名为XAMPP的软件包,但是我们可以通过Docker来复制环境。
-
- PHP:7.4を使えるようにする
-
- Apacheを使えるようにする
-
- MariaDBを使えるようにする
- この本ではメールを用いるためメールサーバを立ち上げる
请注意:本文仅介绍如何构建类似于XAMPP的环境的步骤,不提供详细的解释等。(未来是否会补充说明还未确定)
行动环境
M1 MacBook Air(MacOS 13.1)上的Docker。
文件结构
PHP
├ php
│ └ dockerfile
├ mysql
│ ├ init/
│ └ mysqld_charset.cnf
├ source/
└ docker-compose.yml
编写Compose文件
首先,我们需要编写一个作为所有基础的compose文件。
关于apache,有一个名为php:7.4-apache的容器镜像,将PHP:7.4和apache集成在一起,我们将使用它。
version: '3'
services:
#php用コンテナ
php:
container_name: php-apache
build: ./php
volumes:
- ./sorce:/var/www/html
ports:
- 8080:80
depends_on:
- mysql
#MariaDB用コンテナ
mysql:
container_name: mariaDB
image: mariadb:latest
volumes:
- ./mysql/my.cnf:/etc/mysql/conf.d/my.cnf
- ./mysql/init:/docker-entrypoint-initdb.d
ports:
- 3306:3306
environment:
- MYSQL_ROOT_PASSWORD=admin
#mailコンテナ
#メールアドレス:nobody@example.com
mail:
container_name: mail
image: djfarrelly/maildev
ports:
- "1080:80"
- "1025:1025"
来源/
请将要显示的PHP文件放在这里。
php (only need one option) –
PHP/
在这里放置用于配置php-apache容器的文件。
FROM php:7.4-apache
RUN apt-get update && apt-get install -y libonig-dev && \
apt install -y ssmtp && \
docker-php-ext-install pdo_mysql mysqli mbstring
RUN apt-get install -y --no-install-recommends libc-client-dev libkrb5-dev \
&& PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \
&& docker-php-ext-install imap
ENV APACHE_DOCUMENT_ROOT /var/www/html/htdocs
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
此 Dockerfile 将完成所需驱动程序和模块的安装以及 Apache 的设置。
MySQL是一个关系型数据库管理系统。
本地化为中文:在这里放置MariaDB容器的配置文件。因为在docker-compose.yml中已经写了所需的信息,所以不需要Dockerfile。
我会将MariaDB的设置文件放置在别处。
[mysql]
default-character-set=utf8mb4
[mysqld]
character_set_server=utf8mb4
character_set_filesystem=utf8mb4
collation-server=utf8mb4_general_ci
init-connect='SET NAMES utf8mb4'
init_connect='SET collation_connection = utf8mb4_general_ci'
skip-character-set-client-handshake
这样一来,MariaDB 就能够处理日语了。
开始/初始
请把我想要在数据库启动时加载的SQL文件放在这里。
做完
只需将其在Docker中启动,就可以构建类似于XAMPP的PHP开发环境。
请参照以下内容,并只提供一个选择。
PHP: 7.4-Apache 的版本
邮件开发者