반응형
도커 컴포지트를 사용하여 mongodb에 연결하는 방법은 무엇입니까?
이것은 나의docker-compose.yml
:
mongo:
image: tutum/mongodb
environment:
- AUTH=no
volumes:
- /Users/andrey/docker/mongodb:/mongo/db
ports:
- "27017:27017"
parser:
image: nazandr/goparser
도커 파일 goparser:
FROM golang:1.8
WORKDIR /app
ADD parser.go /app/
RUN go get github.com/PuerkitoBio/goquery; go get gopkg.in/mgo.v2; go build -o parser
ENTRYPOINT ["./parser"]
MongoDB에 연결하려면 어떤 주소를 사용해야 합니까?
다음과 같은 작업을 수행할 수 있습니다.
version: '3'
services:
mongo:
image: 'mongo:3.4.1'
ports:
- '27017:27017'
volumes:
- 'mongo:/data/db'
puma:
tty: true
stdin_open: true
depends_on:
- 'mongo'
build:
context: .
dockerfile: Dockerfile.puma
command: bundle exec rails s -p 3000 -b '0.0.0.0'
ports:
- '3000:3000'
volumes:
- '.:/app'
environment:
- SECRET_KEY_BASE=secret
- MONGO_URL=mongodb://mongo:27017/app_development
volumes:
mongo:
눈치챘겠지만, 다음에서 실행 중인 mongo 서비스에 연결할 수 있습니다.mongo
동일한 위치에 있는 다른 컨테이너의 컨테이너docker-compose.yml
다음과 같은 연결 문자열을 사용하는 파일mongodb://mongo:27017
.
호스트에서 연결하려는 경우 다음을 사용할 수 있습니다.mongodb://localhost:27017
위와 같이 mongo 포트에 노출된 경우.
이렇게 하는 거예요.
version: '3.4'
services:
eventstoresample:
image: eventstoresample
container_name: "es_api"
build:
context: .
dockerfile: EventStoreSample/Dockerfile
networks:
clusternetwork:
ipv4_address: 172.16.0.12
eventstore:
image: eventstore/eventstore
container_name: "es"
environment:
- EVENTSTORE_INT_IP=172.16.0.13
- EVENTSTORE_EXT_HTTP_PORT=2113
- EVENTSTORE_EXT_TCP_PORT=1113
- EVENTSTORE_EXT_HTTP_PREFIXES=http://*:2113/
ports:
- "1113:1113"
- "2113:2113"
networks:
clusternetwork:
ipv4_address: 172.16.0.13
mongodb:
image: mongo:latest
container_name: "mongodb"
environment:
- MONGO_INITDB_ROOT_USERNAME=test
- MONGO_INITDB_ROOT_PASSWORD=test
ports:
- "27014:27017"
networks:
clusternetwork:
ipv4_address: 172.16.0.14
networks:
clusternetwork:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.16.0.0/24
그리고 mongoDb 코드는 c#입니다.
using MongoDB.Driver;
using System;
using System.Threading.Tasks;
namespace EventStoreSample.MongoDbConfigs
{
public class MongoDb : IMongoDb
{
private IMongoCollection<T> GetCollection<T>()
{
var server = new MongoServerAddress(host: "172.16.0.14", port: 27017);
//var server = new MongoServerAddress(host: "localhost", port: 27014);
var credentials = MongoCredential.CreateCredential(
databaseName: "admin",
username: "test",
password: "test"
);
var mongodbClientSettings = new MongoClientSettings
{
Credential = credentials,
Server = server,
ConnectionMode = ConnectionMode.Standalone,
ServerSelectionTimeout = TimeSpan.FromSeconds(3)
};
MongoClient dbClient = new MongoClient(mongodbClientSettings);
var database = dbClient.GetDatabase("EventSampleApiDB");
var collection = database.GetCollection<T>(typeof(T).Name);
return collection;
}
public async Task InsertOneAsync<T>(T entity)
{
await GetCollection<T>().InsertOneAsync(entity);
}
}
}
그리고 API 프로젝트의 도커 파일.
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
WORKDIR /src
COPY . .
RUN dotnet restore "EventStoreSample/EventStoreSample.csproj"
RUN dotnet build "EventStoreSample/EventStoreSample.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "EventStoreSample/EventStoreSample.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "EventStoreSample.dll"]
언급URL : https://stackoverflow.com/questions/43162897/how-to-connect-to-mongodb-using-docker-compose
반응형
'source' 카테고리의 다른 글
"git reset"과 "git checkout"의 차이점은 무엇입니까? (0) | 2023.07.03 |
---|---|
Mongodb Mongo 가져오기가 너무 큽니다.오류 구문 분석 실패 (0) | 2023.07.03 |
분기를 로컬로 제거하는 방법은 무엇입니까? (0) | 2023.07.03 |
Spring Boot 테스트 - bootstrap.properties 재정의 (0) | 2023.07.03 |
생성자가 @Autowired 작업을 어떻게 호출합니까? (0) | 2023.07.03 |