第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在一個(gè)代碼庫(kù)中為多個(gè)服務(wù)器制作容器

如何在一個(gè)代碼庫(kù)中為多個(gè)服務(wù)器制作容器

Go
梵蒂岡之花 2022-09-12 20:17:56
我有一個(gè)存儲(chǔ)庫(kù),其中有多個(gè)服務(wù)器正在運(yùn)行。像這樣的結(jié)構(gòu)// Golang Apps- account = port 4001 - event = port 4002- place = port 4003// Node js- gateway = port 4000我通常使用這樣的腳本在本地運(yùn)行// script.sh here:#!/bin/bashEnvAPP="${ENV_APP:-dev}"function cleanup {    kill "$ACCOUNTS_PID"    kill "$EVENTS_PID"    kill "$PLACES_PID"}trap cleanup EXITgo build -tags $EnvAPP -o ./tmp/srv-accounts ./cmd/server/accountsgo build -tags $EnvAPP -o ./tmp/srv-events ./cmd/server/eventsgo build -tags $EnvAPP -o ./tmp/srv-places ./cmd/server/places./tmp/srv-accounts &ACCOUNTS_PID=$!./tmp/srv-events &EVENTS_PID=$!./tmp/srv-places &PLACES_PID=$!sleep 1node ./cmd/gateway/index.js有沒(méi)有可能我為這種情況創(chuàng)建一個(gè) Docker 文件進(jìn)入生產(chǎn)環(huán)境?在這種情況下,我應(yīng)該在 Docker 文件中運(yùn)行 script.sh 嗎?我應(yīng)該在多克文件中使用的圖像怎么樣?我不知道這種情況使用docker,因?yàn)樵谝粋€(gè)代碼庫(kù)中運(yùn)行多個(gè)服務(wù)器,并且問(wèn)題還端口運(yùn)行服務(wù)器也許你們中的一個(gè)人曾經(jīng)有過(guò)這種情況?知道如何解決這個(gè)問(wèn)題會(huì)很棒在這種情況下,我正在使用圖形QL聯(lián)合( Go ),所以我有多個(gè)服務(wù)和網(wǎng)關(guān) ( NodeJS )我想針對(duì)此問(wèn)題將其部署到生產(chǎn)環(huán)境中
查看完整描述

1 回答

?
烙印99

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊

為此,您需要四個(gè)單獨(dú)的 Dockerfile,才能啟動(dòng)四個(gè)具有四個(gè)不同程序的獨(dú)立容器。Go 組件多克文件可以相當(dāng)簡(jiǎn)單:


# Dockerfile.accounts

FROM golang:1.16 AS build

WORKDIR /app

COPY . .

ARG ENV_APP=dev

RUN go build -tags "$ENV_APP" -o /accounts ./cmd/server/accounts


FROM ubuntu:20.04

COPY --from=build /accounts /usr/local/bin

CMD accounts

(如果除了正在構(gòu)建的特定命令目錄之外,這三個(gè)映像實(shí)際上是相同的,您也可以將其作為傳遞。我假設(shè)這些包需要源目錄中其他位置的包,如 a 或其他任何內(nèi)容,這將要求 Dockerfile 位于頂層。ARG./cmd/server/*./pkg/support


由于您的腳本只運(yùn)行這四個(gè)程序,我通常建議使用 Docker Compose 作為同時(shí)啟動(dòng)四個(gè)容器的一種方式?!笆褂靡阎x項(xiàng)啟動(dòng)一些容器”是 Compose 所做的唯一事情,但它可以完成腳本所做的一切。


# docker-compose.yml

version: '3.8'

services:

  accounts:

    build:

      context: .

      dockerfile: Dockerfile.accounts

  events:

    build:

      context: .

      dockerfile: Dockerfile.events

  places:

    build:

      context: .

      dockerfile: Dockerfile.places

  gateway:

    build:

      context: .

      dockerfile: Dockerfile.gateway

      # (Since a Node app can't reuse Go code, this could also

      # reasonably be `build: cmd/gateway` using a

      # `cmd/gateway/Dockerfile`)

    ports:

      - 3000:3000

只需運(yùn)行即可在前臺(tái)啟動(dòng)所有四個(gè)容器;一旦它啟動(dòng),按+將停止它們。您可以將網(wǎng)關(guān)配置為使用其他容器名稱 , 作為主機(jī)名; 例如。docker-compose upCtrlCaccountseventsplaceshttp://accounts/graphql


您還可以按原樣調(diào)整啟動(dòng)器腳本。運(yùn)行而不是構(gòu)建映像,啟動(dòng)容器(可能具有固定的 s)來(lái)停止它們。您應(yīng)該使用網(wǎng)絡(luò)和它們上的所有容器,以便它們可以以與撰寫設(shè)置相同的方式進(jìn)行通信。docker buildgo builddocker run--namedocker stop && docker rmdocker network createdocker run --net


查看完整回答
反對(duì) 回復(fù) 2022-09-12
  • 1 回答
  • 0 關(guān)注
  • 66 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)