代码之家  ›  专栏  ›  技术社区  ›  Martin Thoma

如何在Python Docker映像中安装MSSQL服务器?

  •  0
  • Martin Thoma  · 技术社区  · 5 年前

    我想在Python docker容器中安装MSSQL服务器,以便能够在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
    

    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
    
    0 回复  |  直到 5 年前
        1
  •  1
  •   Konrad Botor    5 年前

    第二个例子应该是:

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

    mssql 作为默认值。