如何将 SQL 服务器 Java 驱动程序安装到 linux docker 容器中?
How do I install a SQL Server Java driver into a linux docker container?
根据文档,下面的 docker 映像定义不包含 SQL 服务器驱动程序。
如何安装?
文档:
https://github.com/camunda/docker-camunda-bpm-platform
Docker 文件
FROM alpine:3.10 as builder
ARG VERSION=7.12.0
ARG DISTRO=tomcat
ARG SNAPSHOT=true
ARG EE=false
ARG USER
ARG PASSWORD
RUN apk add --no-cache \
ca-certificates \
maven \
tar \
wget \
xmlstarlet
COPY settings.xml download.sh camunda-tomcat.sh camunda-wildfly.sh /tmp/
RUN /tmp/download.sh
##### FINAL IMAGE #####
FROM alpine:3.10
ARG VERSION=7.12.0
ENV CAMUNDA_VERSION=${VERSION}
ENV DB_DRIVER=org.h2.Driver
ENV DB_URL=jdbc:h2:./camunda-h2-dbs/process-engine;MVCC=TRUE;TRACE_LEVEL_FILE=0;DB_CLOSE_ON_EXIT=FALSE
ENV DB_USERNAME=sa
ENV DB_PASSWORD=
ENV DB_CONN_MAXACTIVE=20
ENV DB_CONN_MINIDLE=5
ENV DB_CONN_MAXIDLE=20
ENV DB_VALIDATE_ON_BORROW=false
ENV DB_VALIDATION_QUERY="SELECT 1"
ENV SKIP_DB_CONFIG=
ENV WAIT_FOR=
ENV WAIT_FOR_TIMEOUT=30
ENV TZ=UTC
ENV DEBUG=false
ENV JAVA_OPTS="-Xmx768m -XX:MaxMetaspaceSize=256m"
EXPOSE 8080 8000
# Downgrading wait-for-it is necessary until this PR is merged
# https://github.com/vishnubob/wait-for-it/pull/68
RUN apk add --no-cache \
bash \
ca-certificates \
openjdk11-jre-headless \
tzdata \
tini \
xmlstarlet \
&& wget -O /usr/local/bin/wait-for-it.sh \
"https://raw.githubusercontent.com/vishnubob/wait-for-it/a454892f3c2ebbc22bd15e446415b8fcb7c1cfa4/wait-for-it.sh" \
&& chmod +x /usr/local/bin/wait-for-it.sh
RUN addgroup -g 1000 -S camunda && \
adduser -u 1000 -S camunda -G camunda -h /camunda -s /bin/bash -D camunda
WORKDIR /camunda
USER camunda
ENTRYPOINT ["/sbin/tini", "--"]
CMD ["./camunda.sh"]
COPY --chown=camunda:camunda --from=builder /camunda .
根据您参考的文档,不支持 Microsoft SQL 服务器。
因此,尽管您可以尝试下载 JDBC 驱动程序 (https://docs.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-2017),然后将其添加到 Docker 图像和类路径中:
COPY name_of_jdbc_driver.jar /camunda/mssqlserver.jdbc
env CLASSPATH=/camunda/mssqlserver.jdbc
这很可能不起作用,因为 camunda 软件不支持 MS SQL 服务器。
所以您应该考虑简单地使用他们明确支持的其他数据库之一。例如,我推荐 PostgreSQL。它是免费的(就像在啤酒和演讲中一样),如果你愿意,你可以在生产中使用它。
如果您只是想做一些测试而不需要在生产环境中使用它。您指向的说明对如何在 Docker 容器中启动 PostgreSQL 然后启动使用 PostgreSQL 容器作为数据库的 Camunda 容器有一个很好的解释。
几天后我就能让它工作了。
步骤
- 从 Microsoft 站点下载 JDBC 驱动程序,版本 7.2,它将包含 2 个 JAR 文件
- 解压缩并将文件复制到您的 docker 文件夹中
- 将文件复制到 camunda LIB 文件夹中,这在任何地方都没有解释,但在与 camunda docker git repo 人员短暂交谈后,他们建议我这样做。
唯一需要在DOCKER文件中添加的行是:
#MSSQL SERVER JDBC DRIVER INSTALL
COPY mssql-jdbc-7.2.2.jre11.jar /camunda/lib/
根据文档,下面的 docker 映像定义不包含 SQL 服务器驱动程序。
如何安装?
文档: https://github.com/camunda/docker-camunda-bpm-platform
Docker 文件
FROM alpine:3.10 as builder
ARG VERSION=7.12.0
ARG DISTRO=tomcat
ARG SNAPSHOT=true
ARG EE=false
ARG USER
ARG PASSWORD
RUN apk add --no-cache \
ca-certificates \
maven \
tar \
wget \
xmlstarlet
COPY settings.xml download.sh camunda-tomcat.sh camunda-wildfly.sh /tmp/
RUN /tmp/download.sh
##### FINAL IMAGE #####
FROM alpine:3.10
ARG VERSION=7.12.0
ENV CAMUNDA_VERSION=${VERSION}
ENV DB_DRIVER=org.h2.Driver
ENV DB_URL=jdbc:h2:./camunda-h2-dbs/process-engine;MVCC=TRUE;TRACE_LEVEL_FILE=0;DB_CLOSE_ON_EXIT=FALSE
ENV DB_USERNAME=sa
ENV DB_PASSWORD=
ENV DB_CONN_MAXACTIVE=20
ENV DB_CONN_MINIDLE=5
ENV DB_CONN_MAXIDLE=20
ENV DB_VALIDATE_ON_BORROW=false
ENV DB_VALIDATION_QUERY="SELECT 1"
ENV SKIP_DB_CONFIG=
ENV WAIT_FOR=
ENV WAIT_FOR_TIMEOUT=30
ENV TZ=UTC
ENV DEBUG=false
ENV JAVA_OPTS="-Xmx768m -XX:MaxMetaspaceSize=256m"
EXPOSE 8080 8000
# Downgrading wait-for-it is necessary until this PR is merged
# https://github.com/vishnubob/wait-for-it/pull/68
RUN apk add --no-cache \
bash \
ca-certificates \
openjdk11-jre-headless \
tzdata \
tini \
xmlstarlet \
&& wget -O /usr/local/bin/wait-for-it.sh \
"https://raw.githubusercontent.com/vishnubob/wait-for-it/a454892f3c2ebbc22bd15e446415b8fcb7c1cfa4/wait-for-it.sh" \
&& chmod +x /usr/local/bin/wait-for-it.sh
RUN addgroup -g 1000 -S camunda && \
adduser -u 1000 -S camunda -G camunda -h /camunda -s /bin/bash -D camunda
WORKDIR /camunda
USER camunda
ENTRYPOINT ["/sbin/tini", "--"]
CMD ["./camunda.sh"]
COPY --chown=camunda:camunda --from=builder /camunda .
根据您参考的文档,不支持 Microsoft SQL 服务器。
因此,尽管您可以尝试下载 JDBC 驱动程序 (https://docs.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-2017),然后将其添加到 Docker 图像和类路径中:
COPY name_of_jdbc_driver.jar /camunda/mssqlserver.jdbc
env CLASSPATH=/camunda/mssqlserver.jdbc
这很可能不起作用,因为 camunda 软件不支持 MS SQL 服务器。
所以您应该考虑简单地使用他们明确支持的其他数据库之一。例如,我推荐 PostgreSQL。它是免费的(就像在啤酒和演讲中一样),如果你愿意,你可以在生产中使用它。
如果您只是想做一些测试而不需要在生产环境中使用它。您指向的说明对如何在 Docker 容器中启动 PostgreSQL 然后启动使用 PostgreSQL 容器作为数据库的 Camunda 容器有一个很好的解释。
几天后我就能让它工作了。
步骤
- 从 Microsoft 站点下载 JDBC 驱动程序,版本 7.2,它将包含 2 个 JAR 文件
- 解压缩并将文件复制到您的 docker 文件夹中
- 将文件复制到 camunda LIB 文件夹中,这在任何地方都没有解释,但在与 camunda docker git repo 人员短暂交谈后,他们建议我这样做。
唯一需要在DOCKER文件中添加的行是:
#MSSQL SERVER JDBC DRIVER INSTALL
COPY mssql-jdbc-7.2.2.jre11.jar /camunda/lib/