zoukankan      html  css  js  c++  java
  • Dockerfile操作实践1:php:5.3-apache添加gd库

    php:5.3-apache(Dockerfile镜像)添加gd库:(php为5.3.29)

    参考另一篇文章Dockerfile制作方法

    1、进入镜像

    docker run -ti [image_name]
    ##或者
    nsenter --target `docker inspect --format "{{ .State.Pid }}" [containers_id]` --mount --uts --ipc --net --pid

    2、bash操练起来

    cd /usr/lx
    tar jxvf freetype-2.4.0.tar.bz2
    cd freetype-2.4.0
    ./configure --prefix=/usr/local/freetype && make && make install
    
    cd /usr/lx
    tar zxvf jpegsrc.v9.tar.gz
    cd jpeg-9
    CFLAGS="-O3 -fPIC" ./configure --prefix=/usr/local/jpeg && make && make install
    mkdir -p /usr/local/jpeg/include
    mkdir -p /usr/local/jpeg/lib
    mkdir -p /usr/local/jpeg/bin
    mkdir -p /usr/local/jpeg/man/man1
    
    cd /usr/lx
    tar zxvf libpng-1.2.55.tar.gz
    cd libpng-1.2.55 
    CFLAGS="-O3 -fPIC" ./configure --prefix=/usr/local/libpng && make && make install
    
    cd /usr/lx
    tar zxf php-5.3.29.tar.gz
    cd php-5.3.29/ext/gd/
    phpize
    ./configure --with-php-config=/usr/local/bin/php-config --with-jpeg-dir=/usr/local/jpeg --with-png-dir=/usr/local/libpng --with-freetype-dir=/usr/local/freetype && make && make install
    #/usr/local/bin/php-config是通过find / -name "php-config"查出来的
    
    
    #检查一下上述是否成功了:
    find / -name "gd.so"
    #返回
    #/usr/local/lib/php/extensions/no-debug-non-zts-20090626/gd.so
    #/usr/lx/php-5.3.29/ext/gd/modules/gd.so
    #/usr/lx/php-5.3.29/ext/gd/.libs/gd.so
    #可见已经成功编译好了.so扩展
    
    #接下来要让php加载扩展,修改php.ini文件 在 ;extension=php_zip.dll 下面添加一行 extension=gd.so
    #php:5.3-apache里没有php.ini文件(phpinfo()可看到Loaded Configuration File为空,但是Configuration File (php.ini) Path是有的)
    #需复制一个过去,或者直接创建一个空的也可以,这里直接搞个空的
    #cp /usr/lx/php-5.3.29/php.ini-production  /usr/local/lib/php.ini 
    #sed -i "s|;extension=php_zip.dll|extension=gd.so|g" /usr/local/lib/php.ini
    echo extension=gd.so > /usr/local/lib/php.ini
    
    rm -rf /usr/lx/*
    #直接重启机器,或者重启apach

    3、转换为Dockerfile文件如下:

    FROM php:5.3-apache
    
    ##start###########################################
    
    COPY ./lx /usr/lx
    
    RUN set -x 
    && cd /usr/lx 
    && tar jxvf freetype-2.4.0.tar.bz2 
    && cd freetype-2.4.0 
    && ./configure --prefix=/usr/local/freetype && make && make install 
    
    && cd /usr/lx 
    && tar zxvf jpegsrc.v9.tar.gz 
    && cd jpeg-9 
    && CFLAGS="-O3 -fPIC" ./configure --prefix=/usr/local/jpeg && make && make install 
    && mkdir -p /usr/local/jpeg/include 
    && mkdir -p /usr/local/jpeg/lib 
    && mkdir -p /usr/local/jpeg/bin 
    && mkdir -p /usr/local/jpeg/man/man1 
    
    && cd /usr/lx 
    && tar zxvf libpng-1.2.55.tar.gz 
    && cd libpng-1.2.55  
    && CFLAGS="-O3 -fPIC" ./configure --prefix=/usr/local/libpng && make && make install 
    
    && cd /usr/lx 
    && tar zxf php-5.3.29.tar.gz 
    && cd php-5.3.29/ext/gd/ 
    && phpize 
    && ./configure --with-php-config=/usr/local/bin/php-config --with-jpeg-dir=/usr/local/jpeg --with-png-dir=/usr/local/libpng --with-freetype-dir=/usr/local/freetype 
    && make && make install 
    
    && echo extension=gd.so > /usr/local/lib/php.ini 
    
    ###  && cp /usr/lx/php-5.3.29/php.ini-production  /usr/local/lib/php.ini 
    ###  && sed -i "s|;extension=php_zip.dll|extension=gd.so|g" /usr/local/lib/php.ini 
    
    && rm -rf /usr/lx/*
    
    ##end############################################
    
    # Set the timezone.
    ENV TZ=Asia/Shanghai
    RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
    
    # Write Permission
    # RUN usermod -u 1000 www-data
    RUN chown -R www-data:www-data /var/www/html
    

    4、再安装一个openssl,openssl在/usr/lx/php-5.3.29/ext/openssl里面已经有了,可以直接安装

    sg

    #cd /usr/lx
    #tar zxvf php-5.3.29.tar.gz
    # 进入PHP的openssl扩展模块目录
    cd /usr/lx/php-5.3.29/ext/openssl
    phpize                            
    # 执行后,发现错误 无法找到config.m4 ,config0.m4就是config.m4。直接重命名
    mv config0.m4 config.m4
    phpize
    ./configure --with-openssl --with-php-config=/usr/local/bin/php-config
    make
    make install
    
    # 安装完成后,会返回一个.so文件(openssl.so)的目录/usr/local/lib/php/extensions/no-debug-non-zts-20090626/openssl.so。
    # 将此目录下的openssl.so 文件拷贝到你在php.ini 中指定的 extension_dir 下(在php.ini文件中查找:extension_dir =),这里extension_dir没指定,实际就是/usr/local/lib/php/extensions/no-debug-non-zts-20090626
    # 编辑php.ini文件,在文件最后添加 extension=openssl.so
    # 重启Apache
    apachectl restart
    # 检查,看看有没有错误
    php -i |grep openssl
    # 再检查,使用 phpinfo

    dockerfile文件:

    ##openssl install
    
    && cd /usr/lx/php-5.3.29/ext/openssl                      
    && mv config0.m4 config.m4 
    && phpize 
    && ./configure --with-php-config=/usr/local/bin/php-config --with-openssl 
    && make && make install 
    

      

    5、文件拷贝

    4.1从 container 到 主机(host)

    #使用 docker cp 命令
    docker cp <containerId>:/file/path/within/container /host/path/target
    

    4.2.从 主机(host) 到 container

    1. Get container name or short container id :
    $docker ps

    2. Get full container id
    $docker inspect -f '{{.Id}}' SHORT_CONTAINER_ID-or-CONTAINER_NAME

    3. copy file :
    $sudo cp path-file-host /var/lib/docker/aufs/mnt/FULL_CONTAINER_ID/PATH-NEW-FILE

    EXAMPLE :

    docker ps
    #CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES #d8e703d7e303 solidleon/ssh:latest /usr/sbin/sshd -D cranky_pare docker inspect -f '{{.Id}}' cranky_pare #or docker inspect -f '{{.Id}}' d8e703d7e303 #d8e703d7e3039a6df6d01bd7fb58d1882e592a85059eb16c4b83cf91847f88e5 sudo cp file.txt /var/lib/docker/aufs/mnt/d8e703d7e3039a6df6d01bd7fb58d1882e592a85059eb16c4b83cf91847f88e5/root/file.txt
  • 相关阅读:
    C#中using的使用方法
    Silverlight性能优化纪要原作者Jossef Goldberg
    ASP.NET 获取客户端IP地址
    Silverlight性能优化【转】
    WCF 异常集
    js 其他事件
    ajax等待层
    DEVEXPRESS 破解方法
    类型“Microsoft.Office.Interop.Word.ApplicationClass”未定义构造函数
    js表单相关事件
  • 原文地址:https://www.cnblogs.com/lxsky/p/6134279.html
Copyright © 2011-2022 走看看