我有一個main.go文件,用于運(yùn)行一個應(yīng)用程序,該應(yīng)用程序啟動一個服務(wù)器,該服務(wù)器公開一個端口,我可以從中運(yùn)行端點(diǎn)。我試圖將它 dockerise 并盡可能制作容納應(yīng)用程序和數(shù)據(jù)庫的工作容器,但我似乎仍然必須在運(yùn)行g(shù)o run main.go后運(yùn)行docker-compose up -d。// present folder structure.├── cities.json // holds records of all city names├── docker-compose.yaml ├── dockerfile├── go.mod├── go.sum├── localmon.sh // bash script that does a mongoimport to import all records from cities.json into the db├── main.go└── README.md有人告訴我,我可能必須映射一個卷,知道它的位置并讓它執(zhí)行。另一種選擇(更復(fù)雜)是 bash 腳本(或兩者兼而有之?)我有點(diǎn)不確定如何去做,或者我現(xiàn)在應(yīng)該如何處理我的 compose 文件和 dockerfile。version: '3.3'services: db: hostname: mongo-test container_name: "mongo-test" image: mongo networks: - app_test ports: - "8001:27017" # - "27017:27017" env_file: .env restart: unless-stopped volumes: - ".mongodata:/data/db" app: hostname: app-test container_name: "app" build: context: . dockerfile: dockerfile networks: - app_test ports: - "54321:8080" # - "8080:8080" restart: unless-stopped env_file: .envnetworks: app_test: {}FROM golang:1.17.5-alpine3.15RUN mkdir /appADD . /appWORKDIR /app# Copies and downloads necessary dependenciesCOPY go.mod ./COPY go.sum ./RUN go mod downloadRUN go build -o main .# Port 8080 exposed for useEXPOSE 8080# Command that starts the containerCMD ["./main"]env file that holds some DB related stuff for the main.go file to use.DB_URI=mongodb://mongo-test:8001CITY_DB=nht_citiesCOL_USER=userCOL_CITY=cityUSER_AUTH_TOKEN=50dba...// localmon.sh#! /bin/bashmongoimport --host 192.168.0.101 --port 8001 --db nht_cities --collection city --type json --file ./cities.json docker-compose logs在運(yùn)行最近的docker-compose up -d
如何運(yùn)行我的 main.go 文件而不必在容器之外單獨(dú)運(yùn)行它們?
慕的地8271018
2022-10-24 15:00:00