PHP CLI скрипт и MySQL с Docker составляют

0

Моя цель заключается в том, что запуск скрипта PHP с помощью Docker.

Я как-то нашел, как выполнить сценарий примера PHP, используя Dockerfile, как показано ниже.

$ 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/

Я изучаю, как подключиться к MySQL из PHP-скрипта.

Любая помощь будет полезна для меня.


Обновление 1

У меня был небольшой прогресс. Мне удалось подключиться к контейнеру mysql из контейнера PHP.

$ 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
  • 1
    Это может помочь вам, хотя это postgres: lvthillo.com/…
  • 0
    @lvthillo Спасибо. Я попытаюсь. Должно быть полезно знать докер.
Показать ещё 5 комментариев
Теги:
docker
docker-compose

1 ответ

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, предварительно настроив базу данных с вашими учетными данными.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню