Dockerfile(php)

本文介绍如何使用Docker创建PHP环境的基础镜像及启动镜像,包括安装必要组件、配置环境变量等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里制作镜像分两步,第一步创建基础环境,第二步创建php启动镜像。

第一步:创建基础环境

Dockerfile-1内容:

FROM php:7.1-apache
ENV PORT 80
EXPOSE 80

RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list  \
    && apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y default-libmysqlclient-dev bzip2 libbz2-dev libsasl2-dev curl git libfreetype6-dev libicu-dev libjpeg-dev libmcrypt-dev libpng-dev libpq-dev libxml2-dev \
    && docker-php-ext-install bcmath bz2 calendar iconv intl mbstring mcrypt mysqli opcache pdo_mysql pdo_pgsql pgsql soap zip \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install gd \
    && apt-get purge -y --auto-remove default-libmysqlclient-dev bzip2 libbz2-dev libsasl2-dev \
    && rm -r /var/lib/apt/lists/* 

ENV PATH=$PATH:/root/composer/vendor/bin COMPOSER_ALLOW_SUPERUSER=1

制作镜像文件:php:7.1-base。

docker build -f Dockerfile-1 -t php:7.1-base .

下面就以“php:7.1-base”为基础,制作php程序的docker镜像。

第二步:创建php启动镜像

Dockerfile-2内容:

FROM php:7.1-base
ARG appname
COPY $appname /var/www/html/$appname
RUN usermod -u 1000 www-data; \
        a2enmod rewrite; \
        chown -R www-data:www-data /var/www/html
EXPOSE 80
CMD nohup /bin/sh -c "/etc/init.d/apache2 restart;while true; do echo ' '; sleep 1; done"
# 制作镜像
docker build -f Dockerfile-2 --build-arg appname={真实项目目录} -t php:20201210 .

注意
假设有这种情况:项目名的绝对路径是/a/b/c/appname,而当前目录在根目录下,那是否可以这样传递参数“ appname=/a/b/c/appname ”?答案是否定的。如果这样传递参数,docker容器会把整个目录结构复制进去,而不是只复制最后的appname。所以如果有这种情况,还是乖乖地先把当前目录跳转到appname一级,然后再制作镜像。

# 运行容器
docker run -d -p 20120:80 --privileged -- php:20201210
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值