簡體   English   中英

為客戶端和服務器創建 docker 文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM