我是碼頭工人的新手。我已經使用 VueJs2 構建了一個與外部 API 互動的應用程式。我想在 docker 上運行該應用程式。
這是我的 docker-compose.yml 檔案
version: '3'
services:
ew_cp:
image: vuejs_img
container_name: ew_cp
build:
context: .
dockerfile: Dockerfile
volumes:
- '.:/app'
- '/app/node_modules'
ports:
- '8080:8080'
這是我的 Dockerfile:
FROM node:14.17.0-alpine as develop-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
RUN yarn install
COPY . .
EXPOSE 8080
CMD ["node"]
這是我運行的構建命令來構建我的影像容器。
docker-compose up -d
影像和容器正在構建而沒有錯誤,但是當我運行容器時,它會立即停止。所以容器沒有運行。DockerFile 和 compose 檔案設定是否正確?
uj5u.com熱心網友回復:
首先你運行npm installand yarn install,它做同樣的事情,只是使用不同的包管理器。其次,您正在使用CMD ["node"]which 不會啟動您的 vue 應用程式,因此沒有作業正在運行并且 docker 正在關閉。
對于 vue 應用程式,您通常希望使用靜態資產構建應用程式,然后運行一個簡單的 http 服務器來提供靜態內容。
FROM node:lts-alpine
# install simple http server for serving static content
RUN npm install -g http-server
# make the 'app' folder the current working directory
WORKDIR /app
# copy 'package.json' to install dependencies
COPY package*.json ./
# install dependencies
RUN npm install
# copy files and folders to the current working directory (i.e. 'app' folder)
COPY . .
# build app for production with minification
RUN npm run build
EXPOSE 8080
CMD [ "http-server", "dist" ]
您的docker-compose檔案可能很簡單
version: "3.7"
services:
vue-app:
build:
context: .
dockerfile: Dockerfile
container_name: vue-app
restart: always
ports:
- "8080:8080"
networks:
- vue-network
networks:
vue-network:
driver: bridge
uj5u.com熱心網友回復:
我不確定這個問題,但通過command: tail -f /dev/null在您的docker-compose檔案中使用,它將保持您的容器,以便您可以跟蹤其中的錯誤并找到它的問題。您可以通過運行docker exec -it <CONTAINER-NAME> bash 和跟蹤容器中的錯誤日志來做到這一點。
version: '3'
services:
ew_cp:
image: vuejs_img
container_name: ew_cp
build:
context: .
dockerfile: Dockerfile
volumes:
- '.:/app'
- '/app/node_modules'
command: tail -f /dev/null
ports:
- '8080:8080'
在你的Dockerfile,你必須啟動應用程式如npm run start或任何其他腳本您使用在您運行應用程式package.json。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/346187.html
