t3easy/typo3-bootcamp

用于在 Docker 容器中开发和运行 TYPO3 的环境

资助包维护!
t3easy
paypal.me/t3easy/beer

安装: 286

依赖者: 0

建议者: 0

安全: 0

星星: 17

关注者: 5

分支: 6

开放问题: 12

类型:项目

v10.4.0 2020-06-26 07:33 UTC

README

需求

  1. Docker(4Mac) 17.09 或更高版本用于构建
  2. Docker Compose (包含在 Docker4Mac 中)
  3. composer
  4. 一个 Traefik 反向代理,例如 docker-frontend 或包含 .docker/env.direct.yml 并设置 WEB_PORT

启动新项目

  1. composer create-project t3easy/typo3-bootcamp awesome-project.tld
    (或使用 git 克隆项目并检出所需的分支)
  2. 切换到 awesome-project.tld / 在您喜欢的 IDE 中打开它
  3. .env.dev 重命名为 .env 并根据需要调整它,下面和文件中的注释提供了更多信息。例如 VHOST=typo3.localhost
    如果您使用 .localhost 虚拟主机,您可以在没有主机条目的情况下使用 Chrome 访问它。
    查看: https://tools.ietf.org/html/rfc2606#page-2
  4. 将您的虚拟主机添加为 127.0.0.1 / 您运行 docker 的机器的主机条目
  5. 使用 docker-compose up -d 启动环境
  6. 设置 TYPO3
    1. 使用 TYPO3 控制台
      docker-compose exec -u www-data typo3 vendor/bin/typo3cms install:setup
    2. 或使用浏览器
      docker-compose exec -u www-data typo3 touch /app/private/FIRST_INSTALL
      打开 http://typo3.localhost/typo3/install.php 并配置 TYPO3
  7. 转到

.env

在此文件中,您定义要设置的环境。有两个示例,.env.dev 用于启动开发环境,以及 .env.prod 作为构建和部署项目的模板。

要检查结果,运行 docker-compose config
要将部署到集群,将结果写入文件 docker-compose config > stack.yml 并使用它 docker stack deploy --compose-file stack.yml myproject

COMPOSE_PROJECT_NAME

唯一的工程名称。它不能包含点。例如 project-typo3version,如 company-typo3v11。有关更多详细信息,请参阅 https://docs.docker.net.cn/compose/reference/envvars/#compose_project_name

COMPOSE_FILE

添加所有必要的 compose 文件,使用 : 分隔,始终以根 docker-compose.yml 开头,以确保正确的项目名称和相对路径。最后配置的设置优先。更多内容请参阅 https://docs.docker.net.cn/compose/reference/envvars/#compose_file

VHOST

TYPO3 项目的 FQDN。它将被用于其他服务的前缀,例如,如果您将 VHOST 设置为 typo3.localhost,则可以通过 adminer-typo3.localhost 访问 Adminer 和通过 mailhog-typo3.localhost 访问 Mailhog。

ADDITIONAL_VHOSTS

为 TYPO3 网络服务添加额外的名称。值必须以逗号(,)开头。例如 ,2nd.domain.tld,3rd.domain.tld

FRONTEND_NETWORK

Traefik 可以用于连接到网络服务的 docker 网络的名称。

RESTART

为所有服务定义重启策略。在生产环境中应为always,在开发环境中应为no

DB_IMAGE

db服务的镜像,详见

示例 mariadb:10.2

MYSQL_ROOT_PASSWORD

设置root数据库用户的密码。您不应在生产环境的.env文件中设置密码。请在CLI中设置,或在CI变量中设置。

MYSQL_ROOT_PASSWORD=MyV3rySecretP4sswd docker-compose up -d

或设置在CI变量中。

DB_BIND_TO

将db服务绑定到指定的IP和端口。格式为IP:端口。使用127.0.0.1:仅将动态端口发布到localhost。使用127.0.0.1:13306发布端口13306。使用13306发布13306到所有可用IP。注意!这允许任何地方访问!端口映射到容器内的3306,即MySQL/MariaDB端口。见通过tcp在开发期间访问数据库

REDIS和LDAP

使用这些PHP扩展构建TYPO3镜像。

WEB_PORT

Web容器公开的端口。仅当您使用.docker/env.direct.yml时。

TRAEFIK_ENTRYPOINT_HTTP和TRAEFIK_ENTRYPOINT_HTTPS

Traefik入口点的名称

构建

要构建生产环境,请从根目录使用docker-compose -f .docker/build.yml,带有准备好的.env文件或在构建器的环境中设置REDIS和LDAP。如果您在GitLab CI上构建,可以使用.docker/env.gitlab.yml标记您的镜像。见.gitlab-ci.example.yml

部署

.gitlab-ci.example.yml以获取使用GitLab CI部署到Docker宿主机的示例。考虑在部署作业中设置COMPOSE_PROJECT_NAME,以便能够将项目多次部署到同一Docker宿主机,例如测试、预发布和线上。见https://docs.docker.net.cn/compose/reference/envvars/#compose_project_name

通过tcp在开发期间访问数据库

将一个动态端口映射到数据库服务端口3306。要获取此端口,运行

docker-compose ps db

您将得到类似以下内容

      Name                    Command               State             Ports          
-------------------------------------------------------------------------------------
project_db_1       docker-entrypoint.sh --cha ...   Up      127.0.0.1:32770->3306/tcp

其中32770是连接到本地docker主机的端口。

运行TYPO3控制台命令

要运行TYPO3 PHP容器内的命令,请使用docker-compose:例如清除缓存

docker-compose exec -u www-data typo3 typo3cms cache:flush

导入/导出数据库

导出数据库

docker-compose exec -T db sh -c 'exec mysqldump --opt --single-transaction -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" "$MYSQL_DATABASE"' > dump.sql

导入sql导出文件

docker-compose exec -T db sh -c 'exec mysql -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" "$MYSQL_DATABASE"' < dump.sql
# Setup new/development extensions
docker-compose exec -u www-data typo3 typo3cms extension:setupactive --verbose

直接从远程导入

ssh user@server 'TYPO3_CONTEXT="Production" /path/to/typo3cms database:export' | docker-compose exec -T db sh -c 'exec mysql -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" "$MYSQL_DATABASE"'
# Setup new/development extensions
docker-compose exec -u www-data typo3 typo3cms extension:setupactive --verbose

为什么您不能使用typo3-console将数据库从/到docker环境导入/导出

TYPO3 PHP镜像不包括typo3-console所需的mysql或mysqldump二进制文件。

与docker玩耍

启动演示堆栈