首先,我已经泊坞化了一个数据源,并将其链接到网络。
创建网络 码头工人网络创建-d桥mybridge
将数据库映像链接到网络 docker run -d --net = mybridge --name = db docker-mysql
我去外壳程序中的数据库中添加适当的属性(用户名,密码,数据库名称),就可以了。
现在,完全可以。
现在,我正在尝试将具有以下属性的Spring Boot应用程序链接
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://db:3306/db_example
spring.datasource.username=springuser
spring.datasource.password=ThePassword
# Keep the connection alive if idle for a long time (needed in production)
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1
Dockerfile如下:
# Start with a base image containing Java runtime
FROM java:8-jre
# Add a volume pointing to /tmp
VOLUME /tmp
# Make port 8080 available to the world outside this container
EXPOSE 8080
# The application's jar file
ARG JAR_FILE=build/libs/mysql-0.0.1-SNAPSHOT.jar
# Add the application's jar to the container
ADD ${JAR_FILE} mysql.jar
RUN apt-get update
RUN apt-get install mysql-client -y
RUN apt-get install libmysql-java -y
# Run the jar file
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/mysql.jar"]
我是从Dockerfile构建的,没关系。
因此,我启动以下命令 docker运行--net = mybridge --name = app myappimage
但是,该程序无法连接到数据库,并且日志显示:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: 通讯链接失败
我不知道问题出在哪里。
我的来源是: https://docs.docker.com/v17.03/engine/tutorials/networkingcontainers/#add-containers-to-a-network https://spring.io/guides/gs/accessing-data-mysql/ https://github.com/moby/moby/issues/25562