python - 如何在Python Docker镜像中安装MSSQL Server?

标签 python sql-server linux docker

我想在Python docker容器中安装MSSQL Server,以便能够在CI管道中运行单元测试。
问题是安装不断失败。我该如何解决?
我尝试过的

FROM python:3.7.9-slim-buster
RUN apt-get update

RUN apt-get -y install gnupg curl software-properties-common wget
RUN add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/18.04/mssql-server-2019.list)"
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
    && apt-get update \
    && ACCEPT_EULA=Y DEBIAN_FRONTEND=noninteractive apt-get install -y \
    unixodbc-dev \
    mssql-server
ENV MSSQL_PID 'developer'
ENV MSSQL_SA_PASSWORD 'Devel0per'
RUN /opt/mssql/bin/mssql-conf -n setup accept-eula
ENV SQLALCHEMY_DATABASE_URI mssql+pyodbc://dev_user:Devel0per@localhost:5432/dev_db
这给出:
Step 8/9 : RUN /opt/mssql/bin/mssql-conf -n setup accept-eula
 ---> Running in f3cebdb5b946
Traceback (most recent call last):
  File "/opt/mssql/bin/../lib/mssql-conf/mssql-conf.py", line 361, in <module>
    main()
  File "/opt/mssql/bin/../lib/mssql-conf/mssql-conf.py", line 357, in main
    processCommands()
  File "/opt/mssql/bin/../lib/mssql-conf/mssql-conf.py", line 262, in processCommands
    COMMAND_TABLE[args.which]()
  File "/opt/mssql/bin/../lib/mssql-conf/mssql-conf.py", line 58, in handleSetup
    exit(mssqlconfhelper.setupSqlServer(True, noprompt=args.noprompt))
  File "/opt/mssql/lib/mssql-conf/mssqlconfhelper.py", line 971, in setupSqlServer
    if not checkInstall():
  File "/opt/mssql/lib/mssql-conf/mssqlconfhelper.py", line 941, in checkInstall
    return runScript(checkInstallScript, True) == 0
  File "/opt/mssql/lib/mssql-conf/mssqlconfhelper.py", line 930, in runScript
    return subprocess.call([sudo, "-EH", pathToScript])
  File "/usr/lib/python2.7/subprocess.py", line 172, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/lib/python2.7/subprocess.py", line 394, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1047, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory
试试2
FROM mcr.microsoft.com/mssql/server:2019-latest
RUN apt-get update
Step 2/2 : RUN apt-get update
 ---> Running in a1f0ef2cdd3f
Reading package lists...
E: List directory /var/lib/apt/lists/partial is missing. - Acquire (13: Permission denied)
The command '/bin/sh -c apt-get update' returned a non-zero code: 100

最佳答案

第二个示例应该是:

FROM mcr.microsoft.com/mssql/server:2019-latest
USER root
RUN apt-get update && \
    # install python

USER mssql
Microsoft并未在任何地方进行文档记录,但是此图像包含两个用户,并将未特权用户mssql设置为默认用户。

关于python - 如何在Python Docker镜像中安装MSSQL Server?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64046398/

相关文章:

mysql - SQL 按日期字段上的月份分组

sql-server - 在 SQL Server 中创建计算持久列用作主键

sql-server - 停止 SQL Server 在 WHERE 子句中评估无用的 UPPER/LOWER?

php - 检测图像中的噪声/伪影

python - 迭代非常大的表并更新行的最有效方法是什么?

python - 为什么 globals() 是 Python 中的一个函数?

linux - `ls -lh`如何舍入文件大小?

java - 如何在终端路径中导出带空格的环境变量

python - Ubuntu 14.04 上的 Scrapy

Python Pandas 数据采样/聚合