[英]Create docker file for client and server
我有一個這樣的文件夾結構:root/server root/frontend root/start.sh
start.sh 是這樣的:
#!/bin/sh
cd server
npm run build;
cd ../client;
npm run build;
mv -R build ../server/client;
cd ../server
npm run start;
所以我先構建服務器,然后是客戶端,我將客戶端構建的文件移動到我的服務器應用程序中,然后運行該應用程序……有沒有辦法用 docker 圖像做這樣的事情?
是的,你可以用 .sh 腳本做的大部分事情都可以通過構建 docker 鏡像來完成。 但是,docker 鏡像通常遵循單一職責原則,因此我不會將 FE 和 BE 結合在一個鏡像中(如果它們是兩個不同的應用程序),而是我會做 2 個不同的,然后使用docker compose ,您將能夠管理您的多容器應用程序
讓我們看一個非常簡單的例子
后端:(服務器目錄中的Dockerfile)
FROM node:xxx (use your development version)
WORKDIR /server
COPY . /server/
RUN npm run build
EXPOSE 3000
CMD npm start
前端:(客戶端目錄中的Dockerfile)
FROM node:xxx (use your development version)
WORKDIR /client
COPY . /client/
RUN npm run build
EXPOSE 80
CMD npm start
docker compose(在服務器和客戶端的父目錄中
version: 3
services:
server:
build: ./server
container_name: server
ports:
- 3000:3000
client:
build: ./client
container_name: client
ports:
-80:80
然后使用 docker-compose up --build 您可以隨時構建和運行您的容器,請參閱其他命令的文檔(停止、終止、刪除 ecc)
注意:我已經“手工”編寫了所有內容,可能會有一些拼寫錯誤或錯誤的語法。 對不起,我會解決的!
這可能與您面臨的問題類似:
FROM node:alpine as buildjob_frontend
COPY web/package.json .
COPY web/yarn.lock .
RUN yarn install
COPY web/ .
RUN yarn build
FROM golang:alpine as buildjob_go
RUN mkdir -p /go/src/github.com/marhaupe/go-react-bootstrap && \
mkdir -p /src/bin/ && \
apk update && \
apk add git && \
apk add make
WORKDIR /go/src/github.com/marhaupe/go-react-bootstrap/
COPY . .
RUN GOOS=linux make build-server && mv serverbin /src/bin/app
FROM alpine:latest
RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk/* && \
mkdir -p /src/web/build
COPY --from=buildjob_frontend /build /src/web/build
COPY --from=buildjob_go /src/bin/app /src/
WORKDIR /src
EXPOSE 3000
CMD ["./app"]
構建前端,構建后端,並將后端二進制文件和前端構建文件夾復制到一個 alpine 映像中。 如果您需要了解事物是如何相互聯系的,我可以將完整的 repo 鏈接給您
在 Docker 中更改目錄使用 WORKDIR 關鍵字,您需要在此部分指定完整路徑
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
WORKDIR /usr/src/app/client
RUN npm install
RUN npm run build
WORKDIR /usr/src/app
EXPOSE 5000
CMD ["node", "server.js"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.