问题DockerPHP-Redis与healthcheck
The problem Docker PHP-Redis and healthcheck
我有两个服务。 Redis 和 PHP。如何让 php 等待 redis 的启动并写关于 it.I 尝试使用 healthcheck-s 但显然我没有正确设置它。
docker-compose.yml
version: '2'
services:
php:
build:
context: docker/web
dockerfile: Dockerfile-php-7.0
container_name: php
ports:
- "8280:80"
links:
- redis:redis
redis:
build: docker/cache
container_name: redis
Dockerfile-php-7.0
FROM php:7.0
RUN pecl install redis \
&& docker-php-ext-enable redis
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
CMD [ "php", "./index.php"]
EXPOSE 80
index.php
<?php
echo 'Starting';
$redis = new Redis();
$redis->connect(getenv('host'), getenv('6379'));
var_dump($redis->incr('foo'));
?>
Docker 文件
FROM redis:3.2-alpine
COPY conf/redis.conf /usr/local/etc/redis/redis.conf
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
EXPOSE 6379
别怕骂我。我才刚刚开始学习docker。
如果有任何帮助,我将不胜感激!!!
这是您可以使用的 docker-compose.yml 文件:
version: '2.1'
services:
php:
build:
context: docker/web
dockerfile: Dockerfile-php-7.0
container_name: php
ports:
- "8280:80"
depends_on:
redis:
condition: service_healthy
redis:
build: docker/cache
container_name: redis
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
我还更改了 PHP 脚本 (index.php),如下所示:
<?php
echo 'Starting';
$redis = new Redis();
$redis->connect('redis', '6379');
var_dump($redis->incr('foo'));
现在整个堆栈都可以在我的机器上运行了。我可以从 php.
连接 redis 容器
php 容器日志显示如下
docker logs -f php
Startingint(1)
我有两个服务。 Redis 和 PHP。如何让 php 等待 redis 的启动并写关于 it.I 尝试使用 healthcheck-s 但显然我没有正确设置它。
docker-compose.yml
version: '2'
services:
php:
build:
context: docker/web
dockerfile: Dockerfile-php-7.0
container_name: php
ports:
- "8280:80"
links:
- redis:redis
redis:
build: docker/cache
container_name: redis
Dockerfile-php-7.0
FROM php:7.0
RUN pecl install redis \
&& docker-php-ext-enable redis
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
CMD [ "php", "./index.php"]
EXPOSE 80
index.php
<?php
echo 'Starting';
$redis = new Redis();
$redis->connect(getenv('host'), getenv('6379'));
var_dump($redis->incr('foo'));
?>
Docker 文件
FROM redis:3.2-alpine
COPY conf/redis.conf /usr/local/etc/redis/redis.conf
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
EXPOSE 6379
别怕骂我。我才刚刚开始学习docker。 如果有任何帮助,我将不胜感激!!!
这是您可以使用的 docker-compose.yml 文件:
version: '2.1'
services:
php:
build:
context: docker/web
dockerfile: Dockerfile-php-7.0
container_name: php
ports:
- "8280:80"
depends_on:
redis:
condition: service_healthy
redis:
build: docker/cache
container_name: redis
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
我还更改了 PHP 脚本 (index.php),如下所示:
<?php
echo 'Starting';
$redis = new Redis();
$redis->connect('redis', '6379');
var_dump($redis->incr('foo'));
现在整个堆栈都可以在我的机器上运行了。我可以从 php.
连接 redis 容器php 容器日志显示如下
docker logs -f php
Startingint(1)