我的目标是使用Docker编写运行PHP脚本。
我以某种方式找到了如何使用Dockerfile执行PHP示例脚本,如下所示。
$ ls
Dockerfile test.php
$ cat Dockerfile
FROM php:7.0-cli
COPY ./test.php /tmp
WORKDIR /tmp
CMD [ "php", "./test.php" ]
$ cat test.php
<?php
phpinfo();
$ docker build -t my-php-app .
$ docker run -it --rm --name my-running-app my-php-app
https://docs.docker.com/samples/library/php/
我正在研究如何从PHP脚本连接到MySQL。
任何帮助对我都有帮助。
更新1
我进展甚微。我能够从PHP容器连接到mysql的容器。
$ cat index.php
<?php
$mysqli = new mysqli("database", "admin", "12dlql*41");
echo $mysqli->server_info;
$ docker run -d --name database -e MYSQL_USER=admin -e MYSQL_PASSWORD=12dlql*41 -e MYSQL_RANDOM_ROOT_PASSWORD=true mysql:latest
$ docker run --rm -v $(pwd):/app -w /app --link database tommylau/php php index.php
5.7.21
https://www.shiphp.com/blog/2017/php-mysql-docker
更新2
感谢大家,我找到了方法。
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
搬运工-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
答案 0 :(得分:1)
您应该设置一个docker-compose.yml
文件,将您的容器互连到一个网络中。
例如:
version: '3.4'
myapp_php:
build: ./Dockerfile
container_name: myapp_php
myapp_mysql:
image: mysql:latest
container_name: myapp_mysql
environment:
- MYSQL_ROOT_PASSWORD=somerandompassword
- MYSQL_DATABASE=database
- MYSQL_USER=admin
- MYSQL_PASSWORD=12dlql*41
现在当你运行docker-compose up -d
时,堆栈应该是mysql已经预先设置了你的凭据数据库。