Docker ile PostgreSQL ve pgAdmin Kurulumu

Docker üzerinde PostgreSQL kurulumu için aşağıdaki komutları çalıştırmamız gereklidir.

sudo docker pull postgres
sudo docker run -p 5432:5432 --name postgres -h postgres -e POSTGRES_PASSWORD=sifre0134 -d postgres

Artık 5432 nolu port üzerinden PostgreSQL sunucusuna bağlantı yapabilirsiniz.

pgAdmin kurulumu şu şekilde olacaktır.

sudo docker pull dpage/pgadmin4
sudo docker run -p 5050:80 --name pgadmin -h pgadmin -e 'PGADMIN_DEFAULT_PASSWORD=sifre0134' -e 'PGADMIN_DEFAULT_EMAIL=kullaniciadi@alanadi.com'  -d dpage/pgadmin4

Bu işlemlerden sonra hem PostgreSQL hem de pg Admin kurulumu tamamlanmış olacaktır. http://localhost:5050/ adresi üzerinden pgAdmin uygulamasına erişebilirsiniz. Kullanıcı adı ve şifre bilgilerini kullanarak pgAdmin’de oturum açabilirsiniz.

Yeni postgres bağlantısı için docker postgres containerın ip adresine ihtiyacımız vardır. Bunun için aşağıdaki komut ile ip adresine ulaşabilirsiniz.

docker inspect postgres

Docker üzerinde MS Sql Server Kurulumu

Docker ile Microsoft Sql Server çalıştırmak için aşağıdaki adımları takip edebilirsiniz.

sudo docker pull mcr.microsoft.com/mssql/server:2019-latest
sudo docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Sifre0134" -p 1433:1433 --name mssql -h mssql -d mcr.microsoft.com/mssql/server:2019-latest

Sql Server kurulumu tamamlanmış oldu. Mac işletim sistemi için Azure Data Studio uygulamasını indirip localhost olarak bağlantı sağlayabilirsiniz.

Backup dosyasını geri yüklemek için ilk önce backup dosyasını container içine kopyalanması gerekli.

sudo docker exec -it mssql mkdir /var/opt/mssql/backup
sudo docker cp kaynak/dosyaadi.bak mssql:/var/opt/mssql/backup

Azure Data Studio uygulamasını kullanarak yüklendiğiniz backup dosyasını restore edebilirsiniz.

Docker üzerinde Nginx Loadbalancer ile Deploy

Asp.net core ile geliştirdiğimiz uygulamaları docker ile deploy edip, nginx ile de load balance yapabiliriz.

İlk olarak asp.net core uygulamasını oluşturup, bu uygulamayı docker image haline getirmemiz gerekli.

mkdir coreapp
cd coreapp
dotnet new mvc

Uygulama bu hali ile çalışır haldedir. Docker image oluşturmak için projenin root klasöründe Dockerfile hazırlıyoruz.

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY corenginx.csproj ./
RUN dotnet restore "./corenginx.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "corenginx.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "corenginx.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "corenginx.dll"]

Dockerfile dosyasını kullanarak docker image oluşturuyoruz.

docker build -t corenginx .

Artık docker image kullanarak istediğimiz kadar container açabiliriz.

docker run -d -p 5300:80 corenginx
docker run -d -p 5310:80 corenginx

http://localhost:5300 ve http://localhost:5310 adresini girip kontrol ettiğimizde çalışan uygulamaları göreceğiz. Artık nginx yapılandırmaya hazırız.

nginx ayar dosyamızı oluşturup nginx.conf olarak kaydediyoruz.

upstream servers {
     server 172.17.0.1:5300;
     server 172.17.0.1:5310;
}
server {
     listen 80;
     location / {
          proxy_pass http://servers;
     }
}

Docker image hazırlamak için dockerfile oluşturalım.

FROM nginx
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/conf.d
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

Nginx için image dosyasını hazırlayalım.

docker build -t corebalance .

Bu sayede docker image hazır olmuş oluyor. Artık nginx container çalıştırıp sonucu görebiliriz.

docker run -d -p 80:80 corebalance

Örnek projeye https://github.com/oburan/DockerNginxLoadBalance adresinden ulaşabilirsiniz.