目 录CONTENT

文章目录

Meting-Api Docker 镜像制作

16Reverie
2025-03-25 / 0 评论 / 1 点赞 / 60 阅读 / 0 字

简介

源项目地址:https://github.com/injahow/meting-api

meting-api 是一个基于 创建的 APlayer API 项目,提供音乐相关的 API 服务,可用于获取音乐的各种信息,如歌曲详情、歌词、封面图片、播放链接等,也能获取歌单信息。、

目前手上只有一台安装了docker环境的小机器,API用docker来部署应该是不错的选择,环境隔离,不用为安装了各种版本的依赖如何卸载而恼。

镜像构建

  1. 克隆仓库

git clone https://github.com/injahow/meting-api.git
  1. 在项目根目录下创建 Dockerfile 的文件

cd meting-api

vim Dockerfile

Dockerfile:

# 使用官方 PHP 7.4 Apache 镜像作为基础镜像
FROM php:7.4-apache

# 设置容器内的环境变量,用于配置 PHP 相关扩展的编译选项
ENV PHP_EXTENSIONS="bcmath curl zip" \
    DEBIAN_FRONTEND=noninteractive \
    PKG_CONFIG_PATH="/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/share/pkgconfig"

# 安装系统依赖和 PHP 扩展,同时清理缓存以减少镜像大小
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        libzip-dev \
        zip \
        unzip \
        libcurl4-openssl-dev && \
    docker-php-ext-install $PHP_EXTENSIONS && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*


# 设置工作目录
WORKDIR /var/www/html

# 复制项目文件到工作目录
COPY . .

# 安装 Composer 并设置国内镜像源以加快依赖安装速度
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer && \
    composer config -g repo.packagist composer https://packagist.phpcomposer.com

# 安装项目依赖
RUN composer install --no-dev --optimize-autoloader

# 配置 Apache 以支持 PHP 和 URL 重写
RUN a2enmod rewrite && \
    sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf

# 暴露端口
EXPOSE 80

# 启动 Apache 服务
CMD ["apache2-foreground"]
  1. 构建 Docker 镜像

在项目根目录下打开终端,执行以下命令来构建 Docker 镜像:

docker build -t meting-api:latest .

这里的 meting-api:latest 是镜像的名称和标签,你可以根据需要进行修改。

  1. 运行 Docker 容器

构建完成后,使用以下命令运行 Docker 容器:

docker run -d -p 8080:80 meting-api:latest

上述命令中,-d 表示在后台运行容器,-p 8080:80 表示将容器的 80 端口映射到主机的 8080 端口。你可以根据需要修改主机端口。

docker compose运行

version: '3'
services:
  meting-api:
    image: meting-api:latest
    ports:
      - "8080:80"
    volumes:
      - ~/meting-api-config/index.php:/var/www/html/index.php
      - ~/meting-api-config/config:/var/www/html/config
      - ~/meting-api-logs:/var/www/html/logs

挂载了原仓库说明的可能需要修改和查看的文件

API 运行

浏览器访问http://ip:8080 ,进入API介绍页面

见到此界面则证明API成功运行。

上传镜像到 docker hub

本地构建上传,远程机器直接拉取使用。

  1. 登录 Docker Hub

在本地终端运行以下命令,使用你注册的 Docker Hub 账号登录:

docker login

输入用户名和密码,登录成功后会看到登录成功的提示信息。

docker hub无法登录登录可以使用国内大厂(腾讯云阿里云)提供的容器镜像服务,创建个人容器仓库。腾讯云个人版提供免费10个命名空间、500个镜像仓库额度。

  1. 标记(Tag)镜像

构建好的镜像需要有一个合适的标签,格式为 用户名/仓库名:标签名。例如,你构建的镜像名为 meting-api:latest,你可以使用以下命令添加标签:

docker tag meting-api:latest your_dockerhub_username/meting-api:latest

your_dockerhub_username 替换成你自己的 Docker Hub 用户名。

  1. 上传镜像

使用以下命令将标记好的镜像上传到 Docker Hub:

docker push your_dockerhub_username/meting-api:latest

上传过程中,你会看到上传进度信息,上传完成后,在 Docker Hub 的仓库页面就能看到这个镜像。

遇到的问题

  1. 镜像拉取失败

错误提示

ERROR: failed to solve: php:7.4-apache: failed to resolve source metadata for docker.io/library/php:7.4-apache: failed to do request: Head "https://mirror.ccs.tencentyun.com/v2/library/php/manifests/7.4-apache?ns=docker.io": dial tcp: lookup mirror.ccs.tencentyun.com on 127.0.0.53:53: no such host

原因:镜像源的问题,修改可用镜像源即可。

修改方法参考:Docker/DockerHub 国内镜像源/加速列表(3月19日更新-长期维护)-腾讯云开发者社区-腾讯云

  1. 命令执行失败

ERROR: failed to solve: process "/bin/sh -c apt-get update &&     apt-get install -y --no-install-recommends         libzip-dev         zip         unzip &&     docker-php-ext-install $PHP_EXTENSIONS &&     apt-get clean &&     rm -rf /var/lib/apt/lists/*" did not complete successfully: exit code: 1

执行 apt-get 相关命令和 docker-php-ext-install 命令时失败,退出代码为 1。

解决方法:将RUN命令分开执行,查看具体出错的命令以解决。

......
# 更新软件包列表
RUN apt-get update

# 安装必要的依赖库
RUN apt-get install -y --no-install-recommends \
    libzip-dev \
    zip \
    unzip

# 安装 PHP 扩展
RUN docker-php-ext-install zip

# 清理缓存
RUN apt-get clean && \
    rm -rf /var/lib/apt/lists/*
......
  1. 容器镜像服务

以腾讯云为例,腾讯云提供个人版免费的容器镜像服务。初始化个人实例后,即可登录

docker login ccr.ccs.tencentyun.com --username=<登录用户名>

腾讯云容器镜像服务控制台地址:实例管理 - 容器镜像服务 - 控制台

参考

https://cloud.tencent.com/document/product/1141/63910?from=console_document_search

1

评论区