代码之家  ›  专栏  ›  技术社区  ›  zono

PHP-CLI脚本和MySQL以及Docker-compose

  •  2
  • zono  · 技术社区  · 8 年前

    我的目标是使用Docker compose运行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
    

    docker编写。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 回复  |  直到 8 年前
        1
  •  1
  •   Kevin Kopf    8 年前

    您应该设置 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一起使用您的凭据预先设置数据库。

    推荐文章