gpt4 book ai didi

docker - 如何使用docker-compose为容器设置固定的IP地址?

转载 作者:行者123 更新时间:2023-12-02 18:12:18 33 4
gpt4 key购买 nike

问题

我正在将Java程序连接到mysql,但每次mysql容器的IP地址都会不断变化。如果更改,我必须在我的Java程序中更新该IP地址以进行连接。(我在Java程序中已将172.17.0.2提到为mysql容器ip)。

以下是我简单的jdbc Java程序

import java.sql.*;
import java.sql.Connection;
import java.lang.*;

public class Sample
{
public static void main(String[] args)
{
Connection conn = null;
Statement stmt = null;

String sql= "select * from student1;"; //insert into student1 values(2,'kalam');
try
{
Class.forName("com.mysql.jdbc.Driver");
}
catch(ClassNotFoundException e)
{
System.out.println(e);
}

try{
conn = DriverManager.getConnection("jdbc:mysql://172.17.0.2:3306/university", "root", "root");
stmt = conn.createStatement();

//stmt.execute(sql);
ResultSet rs= stmt.executeQuery(sql);
while(rs.next())
{
System.out.println(rs.getInt(1)+" "+rs.getString(2));
}
System.out.println("value inserted");

}
catch(Exception e)
{
System.out.println(e+"driver man");
}
finally
{
try{
if(stmt!=null)
stmt.close();

if(conn!=null)
conn.close();
}
catch(SQLException e)
{
System.out.println(" conn problem");
e.printStackTrace();
}
}
}
}

以下是我的docker-compose
 mysql:
image: mysqlrep
container_name: mysqlcompose
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 10"

java:
image: java:9
container_name: javacompose
links:
- mysql
command: bash -c "javac /compose/Sample.java && java -cp "./compose:./compose/mysql-connector-java-5.1.5-bin.jar" Sample"
volumes:
- ~/compose:/compose

我在docker compose的mysql服务中使用自己的镜像mysqlrep(我使用包含mysql-server的dockerfile构建了mysqlrep镜像,并创建了我的数据库大学table1表,并通过my.sql文件向其中插入了值) 。

现在,我必须为mysql容器设置固定的IP地址,以便可以在我的Java程序中提供连接的IP地址(bcz它将任务减少到我的客户端)。
我该如何设置?


注意:
  • 我在Windows 7上使用Docker工具箱
  • docker 版本:
  • 客户端版本:1.11.1,OS / Arch:Windows / amd64
  • 服务器版本:1.11.2,Os / Arch:linux / amd64
  • docker-compose版本:1.7.1

  • 请建议...

    最佳答案

    您可以使用容器别名mysql从Java容器中形成连接网址

    DriverManager.getConnection("jdbc:mysql://mysql:3306/university", ...

    关于docker - 如何使用docker-compose为容器设置固定的IP地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38637207/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com