【发布时间】:2018-01-31 20:35:32
【问题描述】:
我正在尝试将“Phoenix (Elixir)-Application”(打包为 Docker-Container)连接到 microsoft/mssql-server-linux:latest Docker-Container
因此我使用https://hex.pm/packages/mssql_ecto 作为适配器
use Mix.Config
config :my_api, MyApi.Repo,
adapter: MssqlEcto,
database: "dev",
username: "sa",
password: "my_api_password",
hostname: "127.0.0.1",
#odbc_driver: "{SQL Server Native Client 11.0}",
#odbc_driver: "{ODBC Driver 11 for SQL Server}",
#odbc_driver: "{ODBC Driver 13.1 for SQL Server}",
#odbc_driver: "{ODBC Driver 13 for SQL Server}", # <- Default
#port: "1433" # <- Default
我当前用于在 Docker 中运行 phoenix-Application 的 Dockerfile:
FROM elixir:1.5.2
# install ODBC driver
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y curl apt-transport-https debconf-utils apt-utils
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/debian/8/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN apt-get update -y && ACCEPT_EULA=Y apt-get install -y msodbcsql && ACCEPT_EULA=Y apt-get install -y mssql-tools && apt-get install -y unixodbc-dev
RUN apt-get install -y erlang-odbc
我猜问题出在我的 Dockerfile 中,尤其是安装 ODBC 驱动程序的行。当您查看我的 Mix.Config 时,您会发现我尝试了许多“odbc-driver”-strings 的组合 - 其中没有一个有效..
这是 phoenix start 的输出:
** (Mix) The database for MyApi.Repo couldn't be created: %Mssqlex.Error{constraint_violations: [], message: "[unixODBC][Driver Manager]Can't open lib '/opt/microsoft/msodbcsql/lib64/libmsodbcsql-11.0.so.2270.0' : file not found Connection to database failed. | ODBC_CODE 01000 | SQL_SERVER_CODE 0", odbc_code: "01000"}
是否有人拥有可以连接到“microsoft/mssql-server-linux:latest Docker-Container”的有效 Elixir (docker-image)?
非常感谢您的帮助!
顺便说一句...我能够通过 HeidiSQL 从主机连接到“mssql-server-linux 容器”和 Microsoft SQL Server Management Studio 17 => 所以“mssql-server-linux Container”完全没有问题。
设置:
- 主机操作系统:Windows 10 Pro
- 适用于 Windows 的 Docker:17.12.0-ce-win47
【问题讨论】: