Я написал Go серверное приложение HTTP, которое связывается с базой данных (mongodb). Когда сервер работает, вы выполняете операции CRUD, а сервер вставляет, извлекает, удаляет и т. Д. c в базу данных mon go.
Мой следующий шаг - создать изображение docker для моего приложения, чтобы я мог добавить sh в docker концентратор. Чтобы создать изображение, я определяю Dockerfile для моего приложения как
# Dockerfile References: https://docs.docker.com/engine/reference/builder/
# Start from the latest golang base image
FROM golang:latest
# Add Maintainer Info
LABEL maintainer="Ralf Daniel <ralf.daniel@gmail.com>"
# Set the Current Working Directory inside the container
WORKDIR /app
# Copy go mod and sum files
COPY go.mod go.sum ./
# Download all dependencies. Dependencies will be cached if the go.mod and go.sum files are not changed
RUN go mod download
# Copy the source from the current directory to the Working Directory inside the container
COPY . .
# Build the Go app
RUN go build -o main .
# Expose port 9090 to the outside world
EXPOSE 9090
# Declare volumes to mount
VOLUME [${LOG_DIR}]
# Command to run the executable
CMD ["./main"]
Когда я создаю изображение, используя
docker build -t app-docker .
Изображения создаются успешно, и я могу перечислить изображения , Однако, когда я запускаю docker image
docker run -d -p 9090:9090 app-docker
и перечисляю запущенные контейнеры, контейнер работает около 9 секунд, а затем останавливается и не может увидеть его снова, когда я выполняю
docker container ls
Мое приложение таково, что когда я его запускаю, оно сначала устанавливает sh соединение с базой данных mon go и запускает прослушивание порта 9090 для любого запроса. Мой вопрос заключается в том, нужно ли мне создавать другой Dockerfile для создания образа mongodb вместе с файлом Docker моего приложения, или мне нужно добавить некоторые параметры в Dockerfile моего приложения. Любая помощь о том, как я мог бы создать docker образ моего приложения, чтобы он мог общаться с mongodb?