iT邦幫忙

0

[docker]docker-compose在php上有異常

舜~ 2021-02-07 16:35:292274 瀏覽
  • 分享至 

  • xImage

各位前輩們好

host環境:win10 pro 64bit
docker環境:Linux容器

請教一下,
我要建立nginx + php + mysql的開發環境
我參考了一些網路範例寫了yml檔
但在執行docker-compose up -d的時候,
mysql,nginx有執行,但php卻一直出錯

雖然依照PHP給的錯誤訊息進行調整還是出錯,
感覺超級麻煩,
用DockerFile的時候沒有錯誤,
改用yml的時候錯誤一堆,
請問我是什麼環節沒注意到導致這麼多的錯誤??

依照錯誤訊息進行調整而加了下面幾行

chmod -R 777 /usr/local/etc/php &&
pear config-set php_ini /usr/local/etc/php &&

但還是有如下的錯誤訊息

cannot open php.ini "/usr/local/etc/php" for writing
You should add "zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so" to php.ini

下面是我的docker-compose.yml

version: '3'
services:

    mysql8:
        image: mysql:8.0.23
        ports:
            - 3307:3306
        volumes:
            - ./mysql/data:/var/lib/mysql
            - ./mysql/log:/var/log/mysql
        environment:
            MYSQL_ROOT_PASSWORD: 123456
            MYSQL_ROOT_HOST: '%'
        command: mysqld --default-authentication-plugin=mysql_native_password
    web:
        image: nginx:latest
        ports:
            - 9011:80
            - 9012:443
        volumes:
            - ./www:/var/www/html
            - ./site.conf:/etc/nginx/conf.d/site.conf
        links:
            - php
    php:
        image: php:7.4-fpm
        ports:
            - 9013:9000
        volumes:
            - ./www:/var/www/html
        command: sh -c "
                cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini &&
                chmod -R 777 /usr/local/etc/php &&
                pear config-set php_ini /usr/local/etc/php &&
                apt-get update && 
                
                apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev &&
                docker-php-ext-configure gd --with-freetype --with-jpeg &&
                docker-php-ext-install gd &&
                
                docker-php-ext-install mysqli pdo pdo_mysql &&
                
                pecl install xdebug &&
                docker-php-ext-enable xdebug
                "

2021 / 2 / 28
最後放棄全部起在yml中,PHP拆出去放在dockerfile中就好了..
不用再加上多餘的
 chmod -R 777 /usr/local/etc/php &&
 pear config-set php_ini /usr/local/etc/php &&
若有人知道為什麼嗎?

看更多先前的討論...收起先前的討論...
咖咖拉 iT邦好手 1 級 ‧ 2021-02-07 18:41:18 檢舉
你的主機環境是?
舜~ iT邦高手 1 級 ‧ 2021-02-07 19:24:10 檢舉
已補~ win10上面裝docker,容器用Linux
咖咖拉 iT邦好手 1 級 ‧ 2021-02-07 20:08:27 檢舉
你複製的docker-compose.yml
裡面寫的是 ubuntu 環境下 安裝
舜~ iT邦高手 1 級 ‧ 2021-02-07 23:35:15 檢舉
嗯? 只要路徑改成windows的路徑或是相對路徑不就可以了嗎?
fillano iT邦超人 1 級 ‧ 2021-02-08 10:44:49 檢舉
pear config-set php_ini /usr/local/etc/php &&
應該是:
pear config-set php_ini /usr/local/etc/php/php.ini &&
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
fillano
iT邦超人 1 級 ‧ 2021-02-09 11:26:28

沒反應所以還是回答一下好了...

script中的這一行

pear config-set php_ini /usr/local/etc/php &&

改成

pear config-set php_ini /usr/local/etc/php/php.ini &&

應該就可以運作了,錯誤訊息看起來是因為試圖把設定寫入/usr/local/etc/php這個檔案所引發的,但這是個目錄。另外,改了這裡,其實也就不用chmod了,一般應該也不建議這樣做的。

舜~ iT邦高手 1 級 ‧ 2021-02-10 23:23:36 檢舉

.

我要發表回答

立即登入回答