如何为在Docker中运行的React vite应用自动运行`npm run dev`

zbdgwd5y  于 2024-01-06  发布在  Docker
关注(0)|答案(2)|浏览(105)

我有一个Vite React应用程序,它有一个Flask API,通过docker-compose在Docker中使用WSL 2运行。但是现在我必须手动运行这些命令才能在浏览器中访问我的React应用程序:

  1. docker exec -it vite_docker sh
  2. npm i && npm run dev

字符串
我可以把这些命令放在哪里,这样当docker-compose正在做它的事情时,它们会自动运行?
docker-compose.yml

  1. version: "3.8"
  2. services:
  3. vite_react:
  4. image: node:alpine
  5. container_name: vite_react
  6. entrypoint: /bin/sh
  7. ports:
  8. - 3000:3000
  9. working_dir: /srv/app
  10. volumes:
  11. - type: bind
  12. source: ./ML-Flask-React
  13. target: /srv/app
  14. tty: true
  15. flask_app:
  16. build: ./ML-Flask-API
  17. container_name: flask_app
  18. ports:
  19. - 5000:5000
  20. depends_on:
  21. - redis
  22. redis:
  23. image: redis:alpine


Dockerfile Flask:

  1. FROM python:3
  2. WORKDIR /app
  3. RUN pip install --upgrade pip
  4. COPY requirements.txt requirements.txt
  5. RUN pip install -r requirements.txt
  6. COPY . .
  7. CMD [ "python", "app.py" ]


React应用程序没有Dockerfile。

dgiusagp

dgiusagp1#

构建自己的Docker镜像来.
1.安装依赖项
1.启动时执行相应的命令
例如

  1. # ML-Flask-React/Dockerfile.development
  2. FROM node:alpine
  3. WORKDIR /srv/app
  4. COPY package*.json .
  5. RUN npm install
  6. CMD ["npm", "run", "dev"]

字符串
然后在撰写服务中使用此功能

  1. services:
  2. vite_react:
  3. build:
  4. context: ./ML-Flask-React
  5. dockerfile: Dockerfile.development
  6. ports:
  7. - "3000:3000"
  8. volumes:
  9. - ./ML-Flask-React:/srv/app
  10. - /srv/app/node_modules


有关匿名/srv/app/node_modules卷装载,请参见this post
我将文件命名为Dockerfile.development,因为您很可能有一个生产构建Dockerfile,而您不想使用它来运行开发服务器

展开查看全部
zynd9foi

zynd9foi2#

您可以在Docker文件的末尾指定ENTRYPOINT npm run dev。这将作为应用程序的主要函数或命令。每当执行Docker镜像时,它都会被执行。
您可以在ENTRYPOINT了解更多信息

相关问题