问题描述
我通过尝试通过docker-entrypoint-initdb.d中的初始化脚本运行飞行路线迁移来扩展docker postgres映像。
正如here所指出的,在初始化阶段,数据库仅在unix套接字上列出。
我无法通过unix套接字连接到数据库,因此无法运行flyway migration,只能不断获取以下信息的变化:
GestureDetector
WARNING: Connection error: Connection to :5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. (Caused by Connection refused (Connection refused)) retrying in 1 sec...
:
Dockerfile
FROM postgres:10.14-alpine
ENV POSTGRES_USER=postgres
ENV POSTGRES_PASSWORD=password
ENV POSTGRES_DB=mydb
ENV FLYWAY_VERSION="6.0.8"
ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk/jre
ENV PATH $PATH:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin
ENV JAVA_VERSION 8u181
ENV JAVA_ALPINE_VERSION 8.252.09-r0
RUN { \
echo '#!/bin/sh'; \
echo 'set -e'; \
echo; \
echo 'dirname "$(dirname "$(readlink -f "$(which javac || which java)")")"'; \
} > /usr/local/bin/docker-java-home \
&& chmod +x /usr/local/bin/docker-java-home
RUN set -x \
&& apk add --no-cache \
openjdk8-jre="$JAVA_ALPINE_VERSION" \
&& [ "$JAVA_HOME" = "$(docker-java-home)" ]
# Install Flyway
workdir /flyway
RUN apk --no-cache add --update bash openssl \
&& wget https://repo1.maven.org/maven2/org/flywaydb/flyway-commandline/${FLYWAY_VERSION}/flyway-commandline-${FLYWAY_VERSION}.tar.gz \
&& tar -xzf flyway-commandline-${FLYWAY_VERSION}.tar.gz \
&& mv flyway-${FLYWAY_VERSION}/* . \
&& rm flyway-commandline-${FLYWAY_VERSION}.tar.gz \
&& ln -s /flyway/flyway /usr/local/bin/flyway
# Change ownership of flyway to postgres user
RUN chown postgres /flyway/flyway
# copy flyway sql migrations and configuration
copY flyway-sql-migrations/sql_migrations /flyway/sql_migrations
copY test-utils/flyway.conf /flyway/flyway.conf
# copy flyway initialization script
copY test-utils/flyway-migrate.sh /docker-entrypoint-initdb.d/flyway-migrate.sh
:
flyway-migrate.sh
#!/bin/sh
flyway -configFiles=/flyway/flyway.conf migrate
:
flyway.conf
经过研究和咨询these posts(相同的问题,已确定问题,但未给出答案),我尝试连接以下flyway.url字符串变体,但未成功:
flyway.url=jdbc:postgresql://:5432/mydb
flyway.user=postgres
flyway.password=password
flyway.locations=filesystem:/flyway/sql_migrations
flyway.table=flyway_schema_history
flyway.connectRetries=60
有人对如何配置JDBC URL有什么建议,以便在初始化阶段可以将flyway连接到postgresql吗?
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)