[英]Additional SQL Server db container in ddev setup beside web and db container
我正在尝试在 docker-compose.override.yaml 中的 ddev 配置中获得一个额外的 SQL Server 容器(作为 TYPO3 的多数据库操场设置)。
它以某种方式工作,我可以从主机连接到 SQL Server(说实话,运气比知识更多;o)。
我绝对不知道如何将新的 mssql 容器连接到 TYPO3 可以访问它的 Web 容器。 完全没有线索;o(有什么想法吗?
更新:我的问题取得了一些进展,见下文。 这比预期的要简单。 Ddev 正在构建一个额外的 MsSql Server 容器,TYPO3 可以使用额外的 DB 配置访问它。
不知道这是否是一个很好的实用方法。 如果 TYPO3 中的 MsSql 支持可用,将进行更多调查。
docker-compose.override.yaml:
version: '3.6'
services:
web:
environment:
- TYPO3_CONTEXT=Development/Ddev
links:
- mssql:mssql
mssql:
# https://hub.docker.com/_/microsoft-mssql-server
image: "mcr.microsoft.com/mssql/server"
volumes:
- mssql-db-data:/var/opt/mssql/
environment:
SA_PASSWORD: "MyPassword001"
ACCEPT_EULA: "Y"
ports:
- "1433:1433"
volumes:
mssql-db-data:
driver: local
LocalConfigurtion 中的数据库连接:
'DB' => [
'Connections' => [
'Default' => [
'charset' => 'utf8',
'dbname' => 'db',
'driver' => 'mysqli',
'host' => 'db',
'password' => 'db',
'port' => 3306,
'user' => 'db',
],
'MsSql' => [
'charset' => 'UTF-8',
'dbname' => 'master',
'driver' => 'sqlsrv',
'host' => 'mssql',
'password' => 'MyPassword001',
'port' => '1433',
'user' => 'SA',
],
],
'TableMapping' => [
'sys_log' => 'MsSql',
],
],
更新 2:
这是一个小更新,见下文。
docker-compose.mssql.yaml:
通过此配置,我在 DDEV 中获得了一个 mssql 容器。
version: '3.6'
services:
web:
links:
- mssql:mssql
mssql:
# https://hub.docker.com/_/microsoft-mssql-server
image: "mcr.microsoft.com/mssql/server"
volumes:
- mssql-db-data:/var/opt/mssql/
environment:
SA_PASSWORD: "MyPassword001"
ACCEPT_EULA: "Y"
ports:
- "1433:1433"
volumes:
mssql-db-data:
driver: local
网络构建/Dockerfile:
Web 容器需要额外的包。 这个 Dockerfile 非常适合我。 此链接有更高级的解决方案: 如何在 DDEV-Local 中安装 SQL Server PHP 驱动程序?
# https://ddev.readthedocs.io/en/stable/users/extend/customizing-images/#adding-extra-dockerfiles-for-webimage-and-dbimage
# https://stackoverflow.com/questions/58086933/how-to-install-the-sql-server-php-drivers-in-ddev-local#new-answer
ARG BASE_IMAGE
FROM $BASE_IMAGE
RUN curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
RUN curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN apt-get update
RUN apt-get --allow-downgrades -y install libssl1.1=1.1.1d-0+deb10u5
RUN apt-get -y update && yes | ACCEPT_EULA=Y apt-get -y install php7.4-dev php-pear unixodbc-dev htop
RUN ACCEPT_EULA=Y apt-get -y install msodbcsql17 mssql-tools
RUN sudo pecl channel-update pecl.php.net
RUN sudo pecl install sqlsrv
RUN sudo pecl install pdo_sqlsrv
RUN sudo printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/7.3/mods-available/sqlsrv.ini
RUN sudo printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/7.3/mods-available/pdo_sqlsrv.ini
RUN sudo phpenmod -v 7.3 -s cli sqlsrv pdo_sqlsrv
RUN sudo phpenmod -v 7.3 -s fpm sqlsrv pdo_sqlsrv
RUN sudo phpenmod -v 7.3 -s apache2 sqlsrv pdo_sqlsrv
RUN sudo printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/7.4/mods-available/sqlsrv.ini
RUN sudo printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/7.4/mods-available/pdo_sqlsrv.ini
RUN sudo phpenmod -v 7.4 -s cli sqlsrv pdo_sqlsrv
RUN sudo phpenmod -v 7.4 -s fpm sqlsrv pdo_sqlsrv
RUN sudo phpenmod -v 7.4 -s apache2 sqlsrv pdo_sqlsrv
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
你的配置看起来不错。 这部分将 mssql 容器链接到 web 容器:
services:
web:
links:
- mssql:mssql
正如您在LocalConfiguration.php
正确设置的那样,它应该可以使用主机mssql
访问。
不过,我不会将文件docker-compose.override.yaml
称为文件。 我称之为docker-compose.mssql.yaml
。 这样您就可以更轻松地添加多个“覆盖”docker-compose 文件,并在需要时轻松地将它们复制到其他项目。 所有docker-compose.*.yaml
文件都将被加载。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.