我有一个main.go文件,用于运行一个应用程序,该应用程序启动一个服务器,该服务器公开一个端口,我可以从中运行端点。我试图将它 dockerise 并尽可能制作容纳应用程序和数据库的工作容器,但我似乎仍然必须在运行go run main.go后运行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
有人告诉我,我可能必须映射一个卷,知道它的位置并让它执行。另一种选择(更复杂)是 bash 脚本(或两者兼而有之?)
我有点不确定如何去做,或者我现在应该如何处理我的 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: .env
networks:
app_test: {}
FROM golang:1.17.5-alpine3.15
RUN mkdir /app
ADD . /app
WORKDIR /app
# Copies and downloads necessary dependencies
COPY go.mod ./
COPY go.sum ./
RUN go mod download
RUN go build -o main .
# Port 8080 exposed for use
EXPOSE 8080
# Command that starts the container
CMD ["./main"]
env file that holds some DB related stuff for the main.go file to use.
DB_URI=mongodb://mongo-test:8001
CITY_DB=nht_cities
COL_USER=user
COL_CITY=city
USER_AUTH_TOKEN=50dba...
// localmon.sh
#! /bin/bash
mongoimport --host 192.168.0.101 --port 8001 --db nht_cities --collection city --type json --file ./cities.json
docker-compose logs在运行最近的docker-compose up -d
慕的地8271018
婷婷同学_
随时随地看视频慕课网APP
相关分类