我试图连接我的java应用程序到我的mysql容器,但失败的连接发生。
当我在本地运行我的应用程序时,一切都正常工作,Java应用程序和MySQL容器之间的连接建立起来了。
但我试图停靠我的java应用程序,它不工作。
下面是我运行mysql容器的方法:
version: '2'
services:
mysql:
image: mysql:latest
ports:
- 3306:3306
environment:
- MYSQL_ROOT_PASSWORD=$DB_ROOT_PWD
- MYSQL_DATABASE=$DB_NAME
- MYSQL_USER=$DB_USER
- MYSQL_PASSWORD=$DB_PWD
volumes:
- msql-data:/var/lib/msql
volumes:
msql-data:
driver: local
下面是我的java应用程序的配置
@Configuration
public class DatabaseConfig {
private String user = System.getenv("DB_USER");
private String password = System.getenv("DB_PWD");
private String serverName = System.getenv("DB_SERVER"); // db host name, like localhost without the port
private String dbName = System.getenv("DB_NAME");
private MysqlDataSource datasource = new MysqlDataSource();
public DatabaseConfig() {
datasource.setPassword(password);
datasource.setUser(user);
datasource.setServerName(serverName);
datasource.setDatabaseName(dbName);
//datasource.setPort(3306) default config
//datasource.setURL("jdbc:mysql://localhost:3306/dbname");
}
这是我的dockerfile
FROM openjdk:8-jdk-alpine
ENV DB_USER=$user \
DB_NAME=$db_name \
DB_SERVER=$server_location \
DB_PWD=$user_pwd
RUN mkdir -p /app/
COPY java_app.jar /app/app.jar
EXPOSE 8080
CMD ["java","-jar","/app/app.jar"]
启动停靠文件的命令
docker build -t my-app:1.0 --build-arg user=$DB_USER --build-arg db_name=$DB_NAME --build-arg server_location=$DB_SERVER --build-arg user_pwd=$DB_PWD .
启动应用程序的命令
docker run --name=app -tid app:1
结果:Result
1条答案
按热度按时间cyvaqqii1#
下面是我的mysql容器的描述:
下面是我的Java APP容器的描述:
ping mysql
时,它工作telnet mysql 3306
时,我得到了这个: