本站面向开发者与科研用户,提供开源镜像的搜索和下载加速服务。
所有镜像均来源于原始开源仓库,本站不存储、不修改、不传播任何镜像内容。

docker-base Docker 镜像下载 - 轩辕镜像

docker-base 镜像详细信息和使用指南

docker-base 镜像标签列表和版本信息

docker-base 镜像拉取命令和加速下载

docker-base 镜像使用说明和配置指南

Docker 镜像加速服务 - 轩辕镜像平台

国内开发者首选的 Docker 镜像加速平台

极速拉取 Docker 镜像服务

相关 Docker 镜像推荐

热门 Docker 镜像下载

docker-base
shopware/docker-base

docker-base 镜像详细信息

docker-base 镜像标签列表

docker-base 镜像使用说明

docker-base 镜像拉取命令

Docker 镜像加速服务

轩辕镜像平台优势

镜像下载指南

相关 Docker 镜像推荐

Shopware 6生产环境Docker基础镜像,基于Alpine+PHP+(Nginx/Caddy),用于构建包含项目代码的Docker镜像,支持Composer安装扩展、构建管理后台和前端,适用于CI/CD管道和容器化部署。
0 次下载activeshopware镜像

docker-base 镜像详细说明

docker-base 使用指南

docker-base 配置说明

docker-base 官方文档

Shopware 6 生产环境Docker镜像

本仓库包含一个基础镜像,基于Alpine + PHP + (Caddy或Nginx),可用于构建包含项目代码的Docker镜像。

警告:由于Transfer-Encoding可能存在DoS风险,建议使用Nginx镜像而非Caddy。查看此问题了解更多信息

注意:此Docker镜像要求通过Composer安装所有扩展。否则,将出现类X未找到错误。详见文档

快速开始

在项目中创建如下Dockerfile:

dockerfile
#syntax=docker/dockerfile:1.4

# 固定版本
FROM ghcr.io/shopware/docker-base:8.2-nginx as base-image
FROM ghcr.io/friendsofshopware/shopware-cli:latest-php-8.2 as shopware-cli

# 构建阶段

FROM shopware-cli as build

COPY --link . /src
WORKDIR /src

RUN --mount=type=secret,id=composer_auth,dst=/src/auth.json \
    --mount=type=cache,target=/root/.composer \
    --mount=type=cache,target=/root/.npm \
    /usr/local/bin/entrypoint.sh shopware-cli project ci /src

# 构建最终镜像

FROM base-image

COPY --from=build --chown=www-data /src /var/www/html

或更好的方式:运行composer req shopware/docker安装Symfony Recipe。

build阶段,我们使用shopware-cli构建Shopware文件:

  • Composer安装
  • 构建管理后台和前端(如需扩展)
  • 精简vendor目录文件以减小镜像层体积
  • 将管理后台翻译文件合并为单个文件

更多关于shopware-cli project ci的信息,请参考shopware-cli。

构建Docker镜像

在CI流水线中构建包含源代码的自定义Docker镜像,并推送到容器仓库。之后可在docker-compose、Kubernetes等环境中使用该镜像。

构建镜像的Github Action示例
yaml
name: Build Docker Image

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v2
        
      - name: Login into Github Docker Registery
        run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin

      - name: Build and push
        uses: docker/build-push-action@v4
        with:
          context: .
          file: ./docker/Dockerfile
          push: true
          tags: ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}

运行容器

docker-compose示例

注意 以下配置不共享var/log或var/cache。建议使用Redis进行缓存,日志应转发到stderr以便在容器日志中查看。

yaml
version: "3.8"
services:
    db:
        image: mysql:8.0
        environment:
            MYSQL_ROOT_PASSWORD: 'shopware'
            MYSQL_USER: shopware
            MYSQL_PASSWORD: shopware
            MYSQL_DATABASE: shopware
        volumes:
        - mysql-data:/var/lib/mysql

    init-perm:
        image: alpine
        volumes:
            - files:/var/www/html/files
            - theme:/var/www/html/public/theme
            - media:/var/www/html/public/media
            - thumbnail:/var/www/html/public/thumbnail
            - sitemap:/var/www/html/public/sitemap
        command: chown 82:82 /var/www/html/files /var/www/html/public/theme /var/www/html/public/media /var/www/html/public/thumbnail /var/www/html/public/sitemap

    init:
        image: local
        build:
            context: .
        env_file: .app.env
        entrypoint: /setup
        volumes:
            - files:/var/www/html/files
            - theme:/var/www/html/public/theme
            - media:/var/www/html/public/media
            - thumbnail:/var/www/html/public/thumbnail
            - sitemap:/var/www/html/public/sitemap
        depends_on:
            db:
                condition: service_started
            init-perm:
                condition: service_completed_successfully
    web:
        image: local
        build:
            context: .
        volumes:
            - files:/var/www/html/files
            - theme:/var/www/html/public/theme
            - media:/var/www/html/public/media
            - thumbnail:/var/www/html/public/thumbnail
            - sitemap:/var/www/html/public/sitemap
        depends_on:
            init:
                condition: service_completed_successfully
        env_file: .app.env
        ports:
            - 8000:8000

    worker:
        image: local
        restart: unless-stopped
        build:
            context: .
        volumes:
            - files:/var/www/html/files
            - theme:/var/www/html/public/theme
            - media:/var/www/html/public/media
            - thumbnail:/var/www/html/public/thumbnail
            - sitemap:/var/www/html/public/sitemap
        depends_on:
            init:
                condition: service_completed_successfully
        env_file: .app.env
        entrypoint: [ "php", "bin/console", "messenger:consume", "async", "low_priority", "--time-limit=300", "--memory-limit=512M" ]
        deploy:
            replicas: 3

    scheduler:
        image: local
        restart: unless-stopped
        build:
            context: .
        volumes:
            - files:/var/www/html/files
            - theme:/var/www/html/public/theme
            - media:/var/www/html/public/media
            - thumbnail:/var/www/html/public/thumbnail
            - sitemap:/var/www/html/public/sitemap
        depends_on:
            init:
                condition: service_completed_successfully
        env_file: .app.env
        entrypoint: [ "php", "bin/console", "scheduled-task:run" ]

volumes:
    mysql-data:
    files:
    theme:
    media:
    thumbnail:
    sitemap:

在设置中,应始终包含一个“init”容器,通过入口点/setup执行扩展更新、主题编译等基础操作。当该容器退出后,即可启动实际的应用/工作容器。详见上述docker-compose示例。

环境变量

变量默认值描述
APP_ENVprod环境
APP_SECRET(空)可通过openssl rand -hex 32生成
INSTANCE_ID(空)商店唯一标识符:可通过openssl rand -hex 32生成
JWT_PRIVATE_KEY(空)可通过shopware-cli project generate-jwt --env生成
JWT_PUBLIC_KEY(空)可通过shopware-cli project generate-jwt --env生成
LOCK_DSNflockSymfony锁定DSN
APP_URL(空)Shopware访问地址
DATABASE_HOST(空)MySQL主机(用于检查MySQL是否存活)
DATABASE_PORT3306MySQL端口(用于检查MySQL是否存活)
BLUE_GREEN_DEPLOYMENT0启用需超级权限以创建触发器
DATABASE_URL(空)MySQL凭证DSN
DATABASE_SSL_CA(空)SSL CA文件路径(需对uid 512可读)
DATABASE_SSL_CERT(空)SSL证书文件路径(需对uid 512可读)
DATABASE_SSL_KEY(空)SSL密钥文件路径(需对uid 512可读)
DATABASE_SSL_DONT_VERIFY_SERVER_CERT(空)禁用服务器证书验证(1表示禁用)
MAILER_DSNnull://localhost邮件发送DSN(管理后台配置可覆盖此值)
OPENSEARCH_URL(空)OpenSearch主机
SHOPWARE_ES_ENABLED0是否启用OpenSearch支持
SHOPWARE_ES_INDEXING_ENABLED0是否启用OpenSearch索引
SHOPWARE_ES_INDEX_PREFIX(空)OpenSearch索引前缀
COMPOSER_HOME/tmp/composer插件管理器缓存目录
SHOPWARE_HTTP_CACHE_ENABLED1是否启用HTTP缓存
SHOPWARE_HTTP_DEFAULT_TTL7200HTTP缓存默认TTL
MESSENGER_TRANSPORT_DSN(空)默认异步队列DSN(示例:amqp://guest:guest@localhost:5672/%2f/default
MESSENGER_TRANSPORT_LOW_PRIORITY_DSN(空)低优先级队列DSN(示例:amqp://guest:guest@localhost:5672/%2f/low_prio
MESSENGER_TRANSPORT_FAILURE_DSN(空)失败消息队列DSN(示例:amqp://guest:guest@localhost:5672/%2f/failure
COMPOSER_PLUGIN_LOADER1启用时禁用动态插件加载,所有插件需通过Composer安装(详见文档)
INSTALL_LOCALEen-GB商店默认语言
INSTALL_CURRENCYEUR商店默认货币
INSTALL_ADMIN_USERNAMEadmin默认管理员用户名
INSTALL_ADMIN_PASSWORDshopware默认管理员密码
PHP_SESSION_COOKIE_LIFETIME0参考PHP FPM文档([***]
PHP_SESSION_GC_MAXLIFETIME1440参考PHP FPM文档([***]
PHP_SESSION_HANDLERfiles设置为redis使用Redis存储会话
PHP_SESSION_SAVE_PATH(空)Redis会话存储路径,如tcp://redis:6379
PHP_MAX_UPLOAD_SIZE128m参考PHP文档
PHP_MAX_EXECUTION_TIME300参考PHP文档
PHP_MEMORY_LIMIT512m参考PHP文档
FPM_PMdynamic参考PHP FPM文档([***]
FPM_PM_MAX_CHILDREN5参考PHP FPM文档([***]
FPM_PM_START_SERVERS2参考PHP FPM文档([***]
FPM_PM_MIN_SPARE_SERVERS1参考PHP FPM文档([***]
FPM_PM_MAX_SPARE_SERVERS3参考PHP FPM文档([***]

在基础设置中,当所有文件本地存储时,需5个卷:

用途路径
发票/私有文件/var/www/html/files
主题文件/var/www/html/public/theme
图片/var/www/html/public/media
图片缩略图/var/www/html/public/thumbnail
生成的站点地图/var/www/html/public/sitemap

建议尽可能使用外部存储服务存储文件。使用外部存储服务时无需挂载卷。详见Shopware***文档。

FAQ

使用Redis存储会话

可将PHP_SESSION_HANDLER设置为redisPHP_SESSION_SAVE_PATH设置为Redis路径,如tcp://redis:6379

已知问题

静态资源存储在本地,但asset-manifest.json尝试写入外部位置

将asset-manifest.json的文件系统覆盖为临时文件系统:

yaml
# config/packages/prod/asset-overwrite.yaml
services:
    Shopware\Core\Framework\Plugin\Util\AssetService:
        arguments:
            - '@shopware.filesystem.asset'
            - '@shopware.filesystem.temp'
            - '@kernel'
            - '@Shopware\Core\Framework\Plugin\KernelPluginLoader\KernelPluginLoader'
            - '@Shopware\Core\Framework\Adapter\Cache\CacheInvalidator'
            - '@Shopware\Core\Framework\App\Lifecycle\AppLoader'
            - '@parameter_bag'

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

oldzhang的头像

oldzhang

运维工程师

Linux服务器

5

"Docker加速体验非常流畅,大镜像也能快速完成下载。"