首页 > 解决方案 > React/Spring/MySQL 容器化:拉取镜像后前端无法启动

问题描述

仍在掌握 Docker 及其概念。我有一个 React 前端,我正在尝试将其部署到 Spring Boot 和 MySQL 中的后端 REST API。现在,我能够分别构建和推送图像,即一个用于 React 应用程序,另一个用于 Spring Boot 应用程序。

这是我Dockerfile的前端 React 应用程序。

FROM node:13.12.0-alpine

WORKDIR /app

ENV PATH /app/node_modules/.bin:$PATH

COPY package.json ./
COPY package-lock.json ./
RUN npm install --silent
RUN npm install react-scripts@3.4.1 -g --silent

COPY . ./

CMD ["npm", "start"]

localhost:3001我可以使用这个 docker 命令运行前端:

docker run -it --rm -v ${PWD}:/app -v /app/node_modules -p 3001:3000 -e CHOKIDAR_USEPOLLING=true dockeruser/app-client

这是针对我的 Spring Boot 后端的:

FROM openjdk:15-jdk-alpine

COPY app-server-web/target/app-server-web.jar /app-server-web.jar

ENTRYPOINT ["java", "-jar", "/app-server-web.jar"]

现在我能够构建这两个并将它们推送到 dockerhub。我现在想编写它们,但由于某种原因,前端无法在我分配给它的端口上启动。这是我的docker-compose.yml文件:

version: '3'
services:
  application-db:
    restart: always
    container_name: application-db
    image: 'mysql:5.7.30'
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: application_database
      MYSQL_USER: alee
      MYSQL_PASSWORD: anotherpassword
    ports:
      - '3308:3306'
    volumes:
      - './initial.sql:/docker-entrypoint-initdb.d/initial.sql'
      - null
  application-server:
    restart: on-failure
    image: 'dockeruser/app-server:latest'
    expose:
      - '8080'
    ports:
      - '8080:8080'
    environment:
      SPRING_DATASOURCE_URL: >-
        jdbc:mysql://application-db:3306/application_database?useSSL=false&allowPublicKeyRetrieval=true
      SPRING_DATASOURCE_USERNAME: alee
      SPRING_DATASOURCE_PASSWORD: anotherpassword
    depends-on:
      - application-db
    networks:
      - backend
      - frontend
  application-client:
    restart: on-failure
    image: 'dockeruser/app-client:latest'
    expose:
      - '3001'
    ports:
      - '3001:3000'
    depends-on:
      - application-server
    networks:
      - frontend
networks:
  backend: null
  frontend: null

这些是我得到的日志docker-compose up

application-client_1  | ℹ 「wds」: Project is running at http://192.168.128.3/
application-client_1  | ℹ 「wds」: webpack output is served from 
application-client_1  | ℹ 「wds」: Content not from webpack is served from /app/public
application-client_1  | ℹ 「wds」: 404s will fallback to /
application-client_1  | Starting the development server...
application-client_1  | 

我很确定出了什么问题,docker-compose.yml但我不确定它是什么?

标签: reactjsspringdockerdocker-composedockerfile

解决方案


推荐阅读