【问题标题】:Install MySQL connector/J in Docker container在 Docker 容器中安装 MySQL 连接器/J
【发布时间】:2015-05-19 01:04:51
【问题描述】:

我正在将应用程序部署到 Elastic Beanstalk 上预配置的 GlassFish Docker 容器。我需要安装 MySQL 连接器/J 库,以便 GlassFish 可以访问它。根据AWS documentation,“使用预配置的 Docker 平台,您不能使用配置文件来自定义和配置应用程序所依赖的软件。”但它确实声明:“您可以将 Dockerfile 添加到应用程序的根文件夹中。”

他们提供了一个为 Python 安装 PostgreSQL 库的示例(没有解释!),但我使用的是 Java 和 MySQL。由于我对 Docker 完全不熟悉(实际上只需要配置这一件事),我不知道该怎么做。使用Amazon's example Dockerfile 我能够想出这个:

FROM amazon/aws-eb-glassfish:4.1-jdk8-onbuild-3.5.1

# Exposes port 8080
EXPOSE 8080 3306

# Install MySQL dependencies
RUN curl -L -o /tmp/mysql-connector-java-5.1.34.jar https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.34/mysql-connector-java-5.1.34.jar && \
  apt-get update && \
  apt-get install -y /tmp/mysql-connector-java-5.1.34.jar libpq-dev && \
  rm -rf /var/lib/apt/lists/*

但是,在应用程序部署时,我收到以下错误:

t update && apt-get install -y /tmp/mysql-connector-java-5.1.34.jar libpq-dev && rm -rf /var/lib/apt/lists/*] returned a non-zero code: 100"

显然,我的库没有安装。 如何使用 Dockerfile 安装 MySQL Connector/J 库?

【问题讨论】:

    标签: java mysql amazon-web-services docker dockerfile


    【解决方案1】:
    apt-get install -y /tmp/mysql-connector-java-5.1.34.jar
    

    apt-get 不是这样工作的。它会安装 debian 软件包。

    有一个名为libmysql-java 的包可能是你想要的。

    你也可以试试

    RUN curl -L -o /mysql-connector-java-5.1.34.jar https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.34/mysql-connector-java-5.1.34.jar
    ENV CLASSPATH=/mysql-connector-java-5.1.34.jar:${CLASSPATH}
    

    【讨论】:

    • 能否解释一下最后一行:ENV CLASSPATH=/mysql-connector-java-5.1.34.jar:${CLASSPATH}?特别是${CLASSPATH} 部分。我假设它将 jar 添加到类路径中。但这是指类路径还是我应该用一个值代替它?
    • 这是试图扩展您现有的CLASSPATH 以包括mysql-connector-java.jar。因此,如果您之前完成了 CLASSPATH=/usr/lib/java,那么您现在将拥有 /mysql-connector-java-5.1.34.jar:/usr/lib/java
    • 在我的本地环境(不是 Docker)上,我会将 mysql-connector-java-5.1.34.jar 放入 GlassFish Server 的以下文件夹中:glassfish4/glassfish/domains/domain1/lib/。我是否正确假设要使用在 Docker 中运行的 GlassFish 执行此操作,我会将 jar 放入/usr/local/glassfish4/glassfish/domains/domain1/lib/
    • 我不知道 /usr/local 的具体情况,但是是的,无论您将 jar 文件放在哪里。如果你这样做docker run -it amazon/aws-eb-glassfish:4.1-jdk8-onbuild-3.5.1 bash,你应该能够在容器上获得一个交互式 shell,并使用它来确定 jar 需要去哪里。
    • 你知道用 ssh 客户端(putty)查看 docker 文件夹结构的方法吗?每当我运行 bash 命令时,正如您在上一条评论中指定的那样,我从来没有得到响应。
    猜你喜欢
    • 1970-01-01
    • 2018-02-08
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 2019-08-04
    • 2020-10-19
    • 2017-08-10
    • 1970-01-01
    相关资源
    最近更新 更多