PHP项目如何制作docker镜像

底包选择

这里我使用nginx的alpine版本作为底包,制作nginx+php7.4的项目镜像

FROM nginx:stable-alpine

修改镜像源

RUN echo "https://mirrors.aliyun.com/alpine/v3.15/main" > /etc/apk/repositories && \
    echo "https://mirrors.aliyun.com/alpine/v3.15/community" >> /etc/apk/repositories && \
    apk update

修改时区

ENV TZ Asia/Shanghai
RUN apk add alpine-conf && \
    /sbin/setup-timezone -z Asia/Shanghai && \
    apk del alpine-conf

安装php7.4

RUN apk add supervisor \
    php7-fpm  \
    php7-curl \
    php7-pdo \
    php7-pdo_mysql \
    php7-iconv \
    php7-fileinfo \
    php7-mbstring \
    php7-mysqli \
    php7-gd \
    php7-opcache \
    php7-xmlrpc \
    php7-openssl \
    php7-gettext \
    php7-zip \
    php7-pecl-memcache \
    php7-pecl-redis \
    php7-phar \
    php7-json \
    php7-ctype

安装composer

RUN php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" && \
    php composer-setup.php && \
    php -r "unlink('composer-setup.php');" && \
    mv composer.phar /usr/local/bin/composer && \
    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

配置nginx+php

RUN sed -i 's/user.*nginx/user www-data www-data/' /etc/nginx/nginx.conf && \
    sed -i '/application\/octet-stream;/a\client_max_body_size 800m;' /etc/nginx/nginx.conf && \
    sed -i 's/^;date.timezone.*=/date.timezone = "Asia\/Shanghai"/' /etc/php7/php.ini && \
    sed -i 's/^variables_order/;variables_order/' /etc/php7/php.ini && \
    sed -i 's/^upload_max_filesize.*M/upload_max_filesize = 800M/' /etc/php7/php.ini && \
    sed -i 's/^post_max_size.*M/post_max_size = 800M/' /etc/php7/php.ini && \
    sed -i 's/^memory_limit.*M/memory_limit = 512M/' /etc/php7/php.ini && \
    sed -i 's/^;daemonize.*yes/daemonize = no/' /etc/php7/php-fpm.conf && \
    sed -i 's/^user.*nobody/user = www-data/' /etc/php7/php-fpm.d/www.conf && \
    sed -i 's/^group.*nobody/group = www-data/' /etc/php7/php-fpm.d/www.conf && \
    sed -i 's/^;listen.owner.*nobody/listen.owner = www-data/' /etc/php7/php-fpm.d/www.conf && \
    sed -i 's/^;listen.group.*nobody/listen.group = www-data/' /etc/php7/php-fpm.d/www.conf && \
    sed -i 's/^;clear_env/clear_env/' /etc/php7/php-fpm.d/www.conf

启动项目

RUN chmod +x /usr/local/bin/start-container

EXPOSE 80

ENTRYPOINT ["start-container"]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值