【问题标题】:How to load mysqli extension inside docker-compose.yml file with NGINX, PHP-FPM如何使用 NGINX、PHP-FPM 在 docker-compose.yml 文件中加载 mysqli 扩展
【发布时间】:2019-11-27 20:59:16
【问题描述】:

加载 docker-compose up 时,wordpress 在 url 上加载,但 mysqli_connect 函数未定义,因为没有扩展。

我尝试在fpm图片下添加以下内容

命令:“docker-php-ext-install mysqli”

我尝试将 Dockerfile 添加到包含

的 docker-compose.yml 文件的目录中
version: "3"

services:
  #database
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: wordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    networks:
      - wpsite
  # webserver
  nginx:
    image: nginx:latest
    ports:
      - "8080:80"
    links:
      - fpm
    volumes:
      - /Users/connergesbocker/Github/cbgesbocker/dotfiles/root/etc/nginx/conf.d/village.conf:/etc/nginx/conf.d/village.conf
      - /Users/connergesbocker/WordPress:/WordPress
    networks:
      - wpsite
  # phpmyadmin
  phpmyadmin:
    depends_on:
      - db
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
      - "8888:8888"
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORD: wordpress
    networks:
      - wpsite
  fpm:
    image: php:5.6.20-fpm
    ports:
      - "90:9000"
    # command: "docker-php-ext-install mysqli"
    links:
      - db
    volumes:
      - /Users/connergesbocker/WordPress:/WordPress
    working_dir: "/"
    networks:
      - wpsite
networks:
  wpsite:
volumes:
  db_data:```

【问题讨论】:

    标签: php mysql wordpress docker docker-compose


    【解决方案1】:

    您可以自定义您的 dockerfile 并在其中添加安装:

    Dockerfile:

    FROM php:5.6.20-fpm
    RUN docker-php-ext-install mysqli
    

    docker-compose.yaml 的一部分:

    fpm:
      build: .
      image: myphp:1
      ports:
        - "90:9000"
      # command: "docker-php-ext-install mysqli"
      links:
        - db
      volumes:
        - /Users/connergesbocker/WordPress:/WordPress
      working_dir: "/"
      networks:
        - wpsite
    

    【讨论】:

    • 我必须稍微改变一下才能让它为我工作。我的docker-compose.yml 文件是version: '3',我做了:``` services: php: build: context: ./php ``` 相对于我的docker-compose.ymlDockerfile 位于./php/Dockerfile
    【解决方案2】:

    您的覆盖将安装扩展,但容器将在安装后停止,因为 php-fpm 不会通过覆盖 CMD 启动。将命令替换为以下命令。

    command:
      - /bin/sh
      - -c
      - |
          docker-php-ext-install mysqli 
          echo "extension installed.....starting php-fpm........................................"
          php-fpm
    

    【讨论】:

    • 这样做的缺点(相对于另一个答案单独的Dockerfile)是它似乎每次我docker-compose up时都会运行安装命令
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    相关资源
    最近更新 更多