如何通过Docker Compose运行PHP脚本并实现MySQL连接?
我来分享下我通过Docker Compose实现PHP脚本连接MySQL(还顺带集成了Memcached)的完整过程,希望能帮到有同样需求的朋友:
我的目标
通过Docker Compose运行PHP脚本,同时实现PHP与MySQL、Memcached服务的连接。
第一步:单独运行PHP脚本
最开始我先搞定了用Dockerfile单独运行PHP脚本的基础操作,步骤如下:
- 查看当前目录文件:
$ ls Dockerfile test.php - 我的Dockerfile内容:
FROM php:7.0-cli COPY ./test.php /tmp WORKDIR /tmp CMD [ "php", "./test.php" ] - test.php脚本内容:
<?php phpinfo(); - 构建镜像并运行容器:
$ docker build -t my-php-app . $ docker run -it --rm --name my-running-app my-php-app
第二步:实现PHP容器连接MySQL容器
接下来我开始研究PHP连接MySQL的方案,先通过容器链接的方式实现了基础连接:
- 编写MySQL连接脚本index.php:
<?php $mysqli = new mysqli("database", "admin", "12dlql*41"); echo $mysqli->server_info; - 启动MySQL容器:
$ docker run -d --name database -e MYSQL_USER=admin -e MYSQL_PASSWORD=12dlql*41 -e MYSQL_RANDOM_ROOT_PASSWORD=true mysql:latest - 运行PHP容器并链接到MySQL容器:
成功输出了MySQL的版本号:$ docker run --rm -v $(pwd):/app -w /app --link database tommylau/php php index.php5.7.21
最终方案:完整Docker Compose配置
在各位的帮助下,我整理出了一套完整的Docker Compose配置,同时集成了Memcached服务,具体配置如下:
自定义PHP镜像的Dockerfile
FROM php:7.1.9-fpm RUN apt-get update \ && docker-php-ext-install pdo_mysql mysqli RUN apt-get update \ && apt-get install -y libmemcached-dev zlib1g-dev \ && pecl install memcached-3.0.3 \ && docker-php-ext-enable memcached opcache
Docker Compose编排文件docker-compose.yml
version: '3.4' services: myapp_memcached: image: memcached:latest container_name: memcached myapp_mysql: image: mysql:latest container_name: database volumes: - ./docker/:/etc/mysql/conf.d - ./docker/:/docker-entrypoint-initdb.d environment: - MYSQL_RANDOM_ROOT_PASSWORD=true - MYSQL_DATABASE=counterparty - MYSQL_USER=admin - MYSQL_PASSWORD=12dlql*41 myapp_php: build: . container_name: myapp working_dir: /app volumes: - ./:/app external_links: - database - memcached
现在只需要执行docker-compose up就能一键启动所有服务,PHP容器可以正常连接到MySQL和Memcached了。
内容的提问来源于stack exchange,提问作者zono
相关产品推荐
相关产品推荐

