私は春のブートWebアプリケーションをデータベースコンテナに接続しようとします。 そして私はウェブからdbコンテナにpingできます。しかし、Webは公開された3307ポートによってdbに接続できません。しかし、私は内部コンテナポート3306によってdbに接続できます。非常に簡単なプロジェクトです。何が間違っているのでしょうか?ドッカーが作成します。ネットワーク。春のブートとMySQLの接続
これは私のドッキングウィンドウ-compose.ymlである:それは十分に簡単です
version: '3'
services:
db:
build:
context: ./db
dockerfile: Dockerfile
image: db
ports:
- "3307:3306"
volumes:
- demo_volume:/var/lib/mysql
networks:
- my-backend
web:
build:
context: ./web
dockerfile: Dockerfile
image: web
depends_on:
- db
ports:
- "18080:8080"
networks:
- my-backend
environment:
- DATABASE_HOST=db
- DATABASE_USER=user
- DATABASE_PASSWORD=password
- DATABASE_NAME=demo
- DATABASE_PORT=3307
- SPRING_PROFILES_ACTIVE=container
- DEBUG=true
volumes:
demo_volume:
driver: local
networks:
my-backend:
driver: bridge
。
アクティブなプロファイルのための私のapplication.yml - コンテナDockerfileデシベル
spring:
profiles:
container
datasource:
url: jdbc:mysql://${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_NAME}?characterEncoding=UTF-8
username: ${DATABASE_USER}
password: ${DATABASE_PASSWORD}
driver-class-name: com.mysql.jdbc.Driver
jpa:
database-platform: org.hibernate.dialect.MySQLDialect
また、非常にシンプルな
:
FROM mysql:5.7
ENV MYSQL_ROOT_PASSWORD=admin
ENV MYSQL_DATABASE=demo
ENV MYSQL_USER=user
ENV MYSQL_PASSWORD=password
ADD dump.sql /docker-entrypoint-initdb.d/
そしてウェブDockerfile:
FROM java:8-jre
COPY ./web.jar /app/web.jar
CMD ["java", "-jar", "/app/web.jar"]
CMD ["java", "-Xmx200m", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/web.jar"]
** dcokerバージョン** 'クライアント: バージョン:17.03.1-CE APIのバージョン:1.27 囲碁バージョン:Gitはコミットgo1.7.5 :内蔵c6d412e :火3月28日00 :40:02 2017 OS /アーチ:ダーウィン/ AMD64 サーバー: バージョン:17.03.1-CE APIバージョン:1.27(最小バージョン1.12) 囲碁バージョン:Gitはコミットgo1.7.5 :c6d412e 内蔵: Fri Mar 24 00:00:50 2017 OS/Arch:linux/amd64 実験:true ' –
' iptables -t nat -L -n'の出力は何ですか? –
@AlexKarshin iptables:コマンドが見つかりません –