簡體   English   中英

創建一個包含 php、node.js 和 php 的 mysqli 的 Dockerfile

[英]Creating a Dockerfile that includes php, node.js, and php's mysqli

我正在嘗試創建一個 Dockerfile,它使用 php、node.js 與 express 和 socket.io 以及 mysql 互操作性定義環境。

目前我有這個:

FROM php:7.2-cli

RUN apt-get update && apt-get install -y nodejs npm
WORKDIR /usr/src/app
COPY . /usr/src/app
RUN npm install
RUN npm install express
RUN npm install socket.io
EXPOSE 8080
CMD [ "node", "src/Server.js" ]

問題是,在調用使用 mysqli 的 php 函數時,出現此錯誤:

Fatal error: Uncaught Error: Class 'mysqli' not found in /usr/src/app/src/php/db_connect.php:21
Stack trace:
#0 /usr/src/app/src/php/websocketsAPI.php(11): include()
#1 {main}
  thrown in /usr/src/app/src/php/db_connect.php on line 21

我讀到這是由於 MySQL 設置。 這個容器上沒有安裝 MySQL,所以我認為這可能是原因。 如果我沒記錯的話,安裝 MySQL 不是一個可以無人值守的過程,所以我不願意使用普通的apt-get系統安裝 MySQL。 我還讀到mysqli是一個 php 組件。 我不需要在這個容器上安裝 MySQL,除非可能是為了解決這個當前的錯誤。 解決這個問題的最佳方法是什么?

我找到了答案。 我需要將此行添加到 Dockerfile:

RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli

這使得 Dockerfile 成為這樣:

FROM php:7.2-cli

RUN apt-get update && apt-get install -y nodejs npm
WORKDIR /usr/src/app
COPY . /usr/src/app
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli
RUN npm install
RUN npm install express
RUN npm install socket.io
EXPOSE 8080
CMD [ "node", "src/Server.js" ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM