摘要:一測(cè)試在官方的基礎(chǔ)上簡化基礎(chǔ)鏡像阿里源維護(hù)者信息添加擴(kuò)展這里目標(biāo),這里是在運(yùn)行上面鏡像的容器測(cè)試得到結(jié)果,部分需要自行下載的插件或交互式安裝的,使用多帶帶下載源碼編譯的方式。
一、測(cè)試PHP
1、在官方的基礎(chǔ)上簡化:
# php7.3.5; Feb 7, 2019 link: https://github.com/docker-library/php/blob/master/7.3/alpine3.9/fpm/Dockerfile # Base images 基礎(chǔ)鏡像+阿里源 FROM alpine:3.9 #MAINTAINER 維護(hù)者信息 MAINTAINER cffycls@foxmail.com # dependencies required for running "phpize" ENV PHP_VERSION 7.3.6 ENV PHP_URL https://secure.php.net/get/php-$PHP_VERSION.tar.xz/from/this/mirror ENV PHPIZE_DEPS autoconf dpkg-dev dpkg file g++ gcc libc-dev make pkgconf re2c ENV PHPIZE_DEVS argon2-dev coreutils curl-dev libedit-dev libsodium-dev libxml2-dev openssl-dev sqlite-dev libjpeg-turbo-dev libpng-dev gd-dev gettext-dev freetype-dev libxpm-dev libevent-dev RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories && apk update && addgroup -g 82 -S www-data && adduser -u 82 -D -S -G www-data www-data && mkdir -p "/usr/local/etc/php/conf.d" && mkdir -p "/var/www/html" && chown www-data:www-data /var/www/html && chmod 777 /var/www/html && apk add --no-cache curl tar xz openssl wget COPY php.tar.xz php.tar.xz RUN set -eux; apk add $PHPIZE_DEPS $PHPIZE_DEVS # && wget -O php.tar.xz "$PHP_URL" && tar -Jxf php.tar.xz && cd php-$PHP_VERSION && ./configure --prefix="/usr/local/php" --with-config-file-path="/usr/local/php/etc" --with-config-file-scan-dir="/usr/local/php/etc/conf.d" --enable-option-checking=fatal --with-mhash --enable-ftp --enable-exif --enable-mbregex --enable-mbstring --enable-mysqlnd --enable-sysvmsg --enable-opcache --enable-pcntl --enable-sockets --enable-sysvsem --enable-xml --with-curl --with-libedit --with-openssl --with-zlib --with-pcre-regex --with-pear --with-libxml-dir=/usr --with-jpeg-dir --with-freetype-dir --with-xpm-dir --with-png-dir --with-gettext --with-mhash --with-iconv --disable-fileinfo --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --disable-cgi && make -j "$(nproc)" && find -type f -name "*.a" -delete && make install # && make clean && rm -rf /tmp/pear ~/.pearrc && cd ../ && rm -rf php-$PHP_VERSION.tar.xz php-$PHP_VERSION
2、添加擴(kuò)展:
這里目標(biāo) swoole-inotify-redis-uuid-memcached,這里是在運(yùn)行上面鏡像的容器測(cè)試得到結(jié)果,部分需要自行下載的插件或交互式安裝的,使用多帶帶下載源碼編譯的方式。/usr/local/php/etc/文件夾需要準(zhǔn)備一個(gè)共享,這里取上面官方的配置稍加修改,并共享出來供后續(xù)安裝使用:
[]:~/tmp/dk# tree -a php php ├── config │?? ├── pear.conf │?? ├── php-fpm.conf │?? ├── php-fpm.conf.default │?? ├── php-fpm.d │?? │?? ├── www.conf │?? │?? └── www.conf.default │?? ├── php.ini │?? └── start.sh ├── Dockerfile └── php.tar.xz
測(cè)試shell到Dockerfile的代碼。其中在安裝memcached(相當(dāng)于是memcache的新版、強(qiáng)化版)時(shí)遇到問題,官方memcached很快安裝成功但php擴(kuò)展難裝:多次出現(xiàn)編譯錯(cuò)誤,php的memcached報(bào)缺libmemcached,而后者總是無法通過
參考《錯(cuò)誤解決》,使用其中的參考自:https://bugs.launchpad.net/li...
Bug Description When building with latest GCC version 7 ---------- clients/memflush.cc:42:22: error: ISO C++ forbids comparison between pointer and integer [-fpermissive] if (opt_servers == false) ^~~~~ clients/memflush.cc:51:24: error: ISO C++ forbids comparison between pointer and integer [-fpermissive] if (opt_servers == false) ^~~~~ Trivial fix: http://pkgs.fedoraproject.org/cgit/rpms/libmemcached.git/plain/libmemcached-build.patch #打補(bǔ)丁,興奮半天沒有效果 http://pkgs.fedoraproject.org/cgit/rpms/libmemcached.git/plain/libmemcached-build.patch patch -p0 < libmemcached-build.patch
最終使用 apk add libmemcached-dev 安裝成功!!!(apk add libmemcached,或search的各版本都不行,只要一個(gè)dev)
#測(cè)試 #swoole 需要對(duì)話參數(shù),所以自定義安裝 RUN set -ex && mkdir -p ~/build/swoole && cd ~/build/swoole && wget -O swoole.tar.gz https://github.com/swoole/swoole-src/archive/master.tar.gz && tar zxvf swoole.tar.gz --strip-components 1 && /usr/local/php/bin/phpize && ./configure --with-php-config=/usr/local/php/bin/php-config --enable-coroutine --enable-openssl --enable-http2 --enable-async-redis --enable-sockets --enable-mysqlnd && make && make install && cd ../ && rm -rf swoole* #inotify RUN set -ex && mkdir -p ~/build/inotify && cd ~/build/inotify && wget -O inotify.tgz https://pecl.php.net/get/inotify-2.0.0.tgz && tar -zxf inotify.tgz --strip-components 1 && /usr/local/php/bin/phpize && ./configure --with-php-config=/usr/local/php/bin/php-config --enable-inotify && make && make install && cd .. && rm -rf inotify* #redis RUN set -ex && mkdir -p ~/build/redis && cd ~/build/redis && wget -O redis.tgz https://pecl.php.net/get/redis-4.3.0.tgz && tar -zxf redis.tgz --strip-components 1 && /usr/local/php/bin/phpize && ./configure --with-php-config=/usr/local/php/bin/php-config --enable-redis && make && make install && cd .. && rm -rf redis* #uuid RUN set -ex && mkdir -p ~/build/libuuid && cd ~/build/libuuid && wget -O libuuid.tgz "http://nchc.dl.sourceforge.net/project/libuuid/libuuid-1.0.3.tar.gz" && tar -zxf libuuid.tgz --strip-components 1 && ./configure --prefix=/usr && make && make install && cd ../ && rm -rf libuuid* && wget -O uuid.tgz http://pecl.php.net/get/uuid-1.0.4.tgz && tar zxf uuid.tgz --strip-components 1 && /usr/local/php/bin/phpize && ./configure --with-php-config=/usr/local/php/bin/php-config && make && make install && cd ../ && rm -rf uuid* #memcached RUN set -ex && #測(cè)試命令:/usr/bin/memcached -d -m 1024 -u root -l 0.0.0.0 -p 11211 -c 1024 -P /tmp/memcached.pid 啟動(dòng)正常 mkdir -p ~/build/memcached && cd ~/build/memcached && wget -O memcached.tgz "http://memcached.org/files/memcached-1.5.16.tar.gz" && tar -zxf memcached.tgz --strip-components 1 && ./configure --with-event-libevent-dir=/usr --prefix=/usr && make && make install && cd ../ && rm -rf memcached* && #需要libmemcached apk add libmemcached-dev && mkdir -p ~/build/memcached_p && cd ~/build/memcached_p && wget -O memcached.tgz "https://pecl.php.net/get/memcached-3.1.3.tgz" && tar -zxf memcached.tgz --strip-components 1 && /usr/local/php/bin/phpize && ./configure --with-php-config=/usr/local/php/bin/php-config && make && make install && cd ../ && rm -rf memcached_p* #編譯使用,運(yùn)行時(shí)共享 -v /your_real_path/ /usr/local/php/etc/ COPY config /usr/local/php/etc VOLUME ["/usr/local/php/etc","/var/www/html"] RUN set -ex && /usr/local/php/bin/pecl channel-update pecl.php.net && /usr/local/php/bin/pecl install igbinary event && /usr/local/php/bin/php -m
3、合并,再添加
CMD ["/usr/local/php/etc/start.sh"]
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/27942.html
摘要:年開發(fā)者應(yīng)該熟練使用,并且知道版本更新內(nèi)容。對(duì)開發(fā)和運(yùn)維人員來說,最希望的就是一次性創(chuàng)建或配置,可以在任意地方正常運(yùn)行。是標(biāo)準(zhǔn)規(guī)范,是開發(fā)的實(shí)踐標(biāo)準(zhǔn)。對(duì)開發(fā)者來說語言推薦和,全棧的選擇非常多,推薦熱門的 前言 在前天(2018-08-02)已經(jīng)發(fā)布了PHP 7.3.0.beta1 Released 如果你還沒有使用 PHP7 ,那真的很遺憾。2018年P(guān)HP開發(fā)者應(yīng)該熟練使用 PHP7...
摘要:上需要主從服務(wù)器端配合完成初始化同步用戶主服務(wù)器端手動(dòng)同步初始數(shù)據(jù)添加測(cè)試數(shù)據(jù),適合從一臺(tái)拓展至多臺(tái)服務(wù)器的情況。 目前已完成:php7及擴(kuò)展、redis5的Dockerfile測(cè)試版編寫,稍許完善后同步上傳到github,(記下這里memcached還沒有剝離安裝)。今天數(shù)據(jù)庫,編程的一個(gè)重要原則是不要重復(fù)造輪子,php因?yàn)樾枰芏嘧远x插件、所以單獨(dú)編譯鏡像,其實(shí)其他包括redis...
摘要:前言這里筑夢(mèng)師是一名正在努力學(xué)習(xí)的開發(fā)工程師目前致力于全棧方向的學(xué)習(xí)希望可以和大家一起交流技術(shù)共同進(jìn)步用簡書記錄下自己的學(xué)習(xí)歷程個(gè)人學(xué)習(xí)方法分享本文目錄更新說明目錄學(xué)習(xí)方法學(xué)習(xí)態(tài)度全棧開發(fā)學(xué)習(xí)路線很長知識(shí)拓展很長在這里收取很多人的建議以后決 前言 這里筑夢(mèng)師,是一名正在努力學(xué)習(xí)的iOS開發(fā)工程師,目前致力于全棧方向的學(xué)習(xí),希望可以和大家一起交流技術(shù),共同進(jìn)步,用簡書記錄下自己的學(xué)習(xí)歷程...
閱讀 2566·2023-04-25 18:13
閱讀 780·2021-11-22 12:10
閱讀 2977·2021-11-22 11:57
閱讀 2142·2021-11-19 11:26
閱讀 2174·2021-09-22 15:40
閱讀 1462·2021-09-03 10:28
閱讀 2707·2019-08-30 15:53
閱讀 1954·2019-08-30 15:44