First, this report is not just about issue with mssql-docker but I suspect it is related to about mssql-tools for Linux in general, more specifically the
sqlcmd. (Not sure where would be better and more accessible by others place to report it.)
I run docker container based on
ubuntu:latest image and I install the
mssql-tools in order to be able to run
sqlcmd (I’m connecting to SQL Server in separate container).
Here is my Dockerfile
RUN apt-get -qy update && apt-get -qy install --no-upgrade --no-install-recommends \ apt-transport-https \ apt-utils \ curl \ software-properties-common RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - RUN add-apt-repository "$(curl -s https://packages.microsoft.com/config/ubuntu/16.04/prod.list)" RUN ACCEPT_EULA=Y apt-get -qy install --no-upgrade --no-install-recommends \ msodbcsql \ mssql-tools \ unixodbc-dev RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
Then I do
docker exec -it bash and BANG!
root@2531848bc8e4:/# /opt/mssql-tools/bin/sqlcmd terminate called after throwing an instance of 'std::runtime_error' what(): locale::facet::_S_create_c_locale name not valid
The SQL Server installation docs do not mention anything about specific locale required.
The only source of any hints is the
Dockerfile-s like https://github.com/Microsoft/mssql-docker/blob/master/oss-drivers/msphpsql/Dockerfile, which contain:
# install necessary locales RUN apt-get install -y locales \ && echo "en_US.UTF-8 UTF-8" > /etc/locale.gen \ && locale-gen
Clearly, this is a bug in the implementation of the
mssql-tools, specifically the
sqlcmd which should detect it runs in environment with incompatible locale and, obviously, print an informative message, not just terminate.