从Docker访问SQL Server

时间:2018-12-04 03:04:20

标签: sql-server docker

我正在尝试从在Ubuntu计算机上运行的Alpine Docker映像访问网络上另一台计算机上运行的SQL Server数据库。到目前为止,我可以从Ubuntu计算机上访问数据库,但是无法从容器内部连接到数据库。通过在network_mode: host文件中设置docker-compose.yml,可以ping SQL Server数据库,但是仍然无法使用isqltsql或Python模块连接到该数据库。 pyodbc

我可以使用tsql从主机和容器中查找数据库,但是不能从容器中连接数据库。

# works fine from host and container
tsql -H apex-data.apex.local -L

# only works from host
tsql -S apex-data -p 1433 -U condor
# or alternatively with /etc/odbc.ini
isql APEXDSN

这是我的Dockerfile

FROM python:3.6-alpine3.7

ENV PYTHONUNBUFFERED 1

# update apk repo
RUN echo "http://dl-4.alpinelinux.org/alpine/v3.7/main" >> /etc/apk/repositories && \
    echo "http://dl-4.alpinelinux.org/alpine/v3.7/community" >> /etc/apk/repositories

RUN apk update && apk upgrade && \
    apk add unixodbc unixodbc-dev && \
    apk add freetds && \
    apk add build-base

WORKDIR /usr/src/project

COPY requirements.txt ./
RUN pip install -r requirements.txt

COPY odbc.ini /etc/odbc.ini
COPY odbcinst.ini /etc/odbcinst.ini

COPY project ./

我的docker-compose.yml如下:

version: '3.2'

services:

  app:
    build: .
    container_name: "nf-app"
    command: python3 app.py
    volumes:
      - ./project:/usr/src/project
    ports:
      - "3001:3001"
      - "1433:1433"
    network_mode: host

这是odbcinst.ini文件:

[FreeTDS]
Description = TD Driver (MSSQL)
Driver = /usr/lib/libtdsodbc.so.0

[ODBC]
Trace = Yes
ForceTrace = Yes
TraceFile = /usr/src/project/logs/odbc.log

0 个答案:

没有答案