无法在docker中提供CLASSPATH?

问题:

当我尝试通过在浏览器中运行Web应用程序(.html,.jsp文件)将jsp容器连接到mysql容器时,我正面临一个classNotFoundException

注意:它在Eclipse中按预期执行

描述:

我使用下面的dockerfile创build了一个“mysqlrep”图像,我在docker-compose中使用了这个图像名称。

from ubuntu:14.04 run apt-get update run apt-get install mysql-server -y run apt-get install curl -y RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/my.cnf env set MYSQL_ROOT_PASSWORD= root add my.sql /var/lib/mysql run bash -c "/etc/init.d/mysql start && mysql -u root </var/lib/mysql/my.sql" 

在上面的dockerfile中,我使用my.sql文件创build了数据库,如下所示

 CREATE SCHEMA softwareag; use softwareag; create table users( username varchar(10) primary key, pwd varchar(10), fname varchar(10), lname varchar(10), email varchar(30) ); insert into users values('shashank','shas','shashank','g','sg@gmail.com'); CREATE USER "root"@"%" IDENTIFIED BY "root"; GRANT ALL PRIVILEGES ON *.* TO "root"@"%"; FLUSH PRIVILEGES; 

以下是我的连接mysql容器和jsp容器的docker-compose.yml

 mysql: image: mysqlrep1 container_name: mysqlcompose1 environment: - MYSQL_ROOT_PASSWORD= root ports: - "0.0.0.0:3306:3306" command: bash -c "/etc/init.d/mysql start && cd /var/lib/mysql && mysql -u root && sleep 50" jsp: build: . container_name: jspcompose1 links: - mysql cap_add: - SYS_PTRACE ports: - "8080:8080" command: bash -c "/etc/init.d/tomcat7 start && ping 127.0.0.1 -c 100" 

我正在使用dockerfile在docker-compose中创build一个jsp容器。 在dockerfile中,使用ubuntu作为基础镜像,在其上安装jdk,tomcat7,并在/ var / lib / tomcat7 / webapps / jsp容器的ROOT目录下挂载.html,.jsp文件。

注意:我也尝试了很多语法来为mysql .jar文件设置类path,然后将mysql.jar添加到dockerfile中的lib目录中,但是它并不能解决我的问题。

在运行docker-compose之后,同时我通过http:// system-ip-address:8080 / index.html在浏览器中访问它。

注意:在索引.html中,用户在input用户名和密码后点击提交button,redirect到signIn.jsp页面,通过连接mysql数据库来validation用户名/密码。

它可以工作,但是当用户点击提交时,它会被redirect到signIn.jsp,并引发ClassNotFoundException。

这是我的signIn.jsp文件

 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Sign In</title> </head> <body> <%@ page import="java.sql.*"%> <%@ page import="javax.sql.*"%> <%@ page isErrorPage="true" %> <% try{ String userid=request.getParameter("usr"); session.setAttribute("username",userid); String pwd=request.getParameter("pwd"); Class.forName("com.mysql.jdbc.Driver"); java.sql.Connection con = DriverManager.getConnection("jdbc:mysql://mysql:3306/softwareag","root","root"); Statement st= con.createStatement(); ResultSet rs=st.executeQuery("select * from users where username='"+userid+"'"); if(rs.next()) { if(rs.getString(2).equals(pwd)) { response.sendRedirect("http://www.softwareag.com/in/"); } }else { response.sendRedirect("http://localhost:8080/index.html"); } } catch(Exception e) { out.print("Exception:"+e); } %> </body> </html> 

你能build议解决scheme,使其工作?

mysql-connector-java-5.1.5-bin.jar文件如何以及在哪里提供classpath?