我希望通过将这个S3和bcp工具结合起来,构建一个用于将大型Server表转储到bcp中的对接映像。理想情况下,我可以传递表、数据库、用户、密码和s3路径作为docker run命令的参数。
剧本看上去像
#!/bin/bash
TABLE_NAME=$1
DATABASE=$2
USER=$3
PASSWORD=$4
S3_PATH=$5
# read sqlserver...
# write to s3...
# .....而Dockerfile是:
# SQL Server Command Line Tools
FROM ubuntu:16.04
LABEL maintainer="SQL Server Engineering Team"
# apt-get and system utilities
RUN apt-get update && apt-get install -y \
curl apt-transport-https debconf-utils \
&& rm -rf /var/lib/apt/lists/*# SQL Server Command Line Tools
FROM ubuntu:16.04
LABEL maintainer="SQL Server Engineering Team"
# apt-get and system utilities
RUN apt-get update && apt-get install -y \
curl apt-transport-https debconf-utils \
&& rm -rf /var/lib/apt/lists/*
# adding custom MS repository
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
# install SQL Server drivers and tools
RUN apt-get update && ACCEPT_EULA=Y apt-get install -y msodbcsql mssql-tools awscli
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
RUN /bin/bash -c "source ~/.bashrc"
ADD ./sql2sss.sh /opt/mssql-tools/bin/sql2sss.sh
RUN chmod +x /opt/mssql-tools/bin/sql2sss.sh
RUN apt-get -y install locales
RUN locale-gen en_US.UTF-8
RUN update-locale LANG=en_US.UTF-8
ENTRYPOINT ["/opt/mssql-tools/bin/sql2sss.sh", "DB.dbo.TABLE", "SQLSERVERDB", "USER", "PASSWORD", "S3PATH"]如果我复制CMD /bin/bash的入口点并使用-it运行映像,我可以手动运行sql2sss.sh,它可以正常工作,读取和写入s3。然而,如果我尝试使用入口点,如图所示,bcp: command not found。
我还注意到,如果在迭代模式下使用CMD /bin/sh,则会产生相同的错误。为了让入口点正确运行脚本,我是否遗漏了一些配置?
发布于 2022-05-09 04:08:04
你试过吗
ENV PATH="/opt/mssql-tools/bin:${PATH}"而不是导出bashrc?
正如David所指出的,码头不读取点文件
基本上在ENV原语中添加env定义
https://stackoverflow.com/questions/72164315
复制相似问题