构建LNMP镜像

3 阅读1分钟

由于网络问题,目前腾讯云服务器可以使用腾讯云的镜像,但是只能限制在腾讯云的服务器上使用

FROM php:8.4-fpm-alpine3.22

LABEL Maintainer="lxr <lxr@bulo.cn>"
LABEL Description="Lightweight container with Nginx 1.20 & PHP 8 based on Alpine Linux. Fork By TrafeX"

# use aliyun mirror
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

# Install packages and remove default server definition
RUN apk --no-cache add \
  curl \
  nginx \
  git \
  supervisor \
  openssl-dev \
  php84-pecl-redis  # 直接安装预编译的 Redis 扩展

# 安装 PDO MySQL 扩展
RUN docker-php-ext-install pdo_mysql

# 启用 Redis 扩展(如果需要)
# 通常 apk 安装的扩展会自动启用

# Installing composer
RUN curl -sS https://getcomposer.org/installer -o composer-setup.php \
    && php composer-setup.php --install-dir=/usr/local/bin --filename=composer \
    && rm -rf composer-setup.php

CMD ["/bin/sh"]

踩坑指南:

  1. 由于使用了宝塔安装的Docker环境,如果出现了容器中无法访问外网,比如无法ping外网,需要检查是否开启了IPV4的转发功能
# 检查IPv4转发是否开启
cat /proc/sys/net/ipv4/ip_forward

# 如果返回0,则需要启用
sudo sysctl -w net.ipv4.ip_forward=1

# 永久生效
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
  1. 将镜像推送到镜像仓库
# 1. 登录
docker login registry.cn-huhehaote.aliyuncs.com
# 用户名:yourname@company.com
# 密码:********

# 2. 构建并打标签
docker build -t registry.cn-huhehaote.aliyuncs.com/bulo/php-nginx:v1.0 .

# 3. 推送
docker push registry.cn-huhehaote.aliyuncs.com/bulo/php-nginx:v1.0

# 4. 查看
docker images | grep huhehaote