Aws Container를 사용하기 위해 Aws Linux Ubuntu 서버에서 aws cli 설치하는 법을 알아보겠습니다.

# Aws cli가 시스템에 설치되어 있는지 확인 후 설치
sudo apt update
sudo apt install awscli

# Aws cli 버전 확인
aws --version

# Aws Configure 설정
aws configure
secret Access Key = {}
access key = {}
Default region name = {}

 

Aws Ec2로 만들어진 Ubuntu 서버에 Docker 설치하는 법을 알아보겠습니다.

1. Docker 설치 명령어

# 패키지 업데이트
sudo apt update

# https관련 패키지 설치
sudo apt install apt-transport-https ca-certificates curl software-properties-common

# docker repository 접근을 위한 gpg 키 설정
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# docker repository 등록
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

# 업데이트
sudo apt update

# 도커 설치
sudo apt install docker-ce

# 설치 확인
docker --version

2. sudo 없이 Docker 명령어 사용

# 현재 사용자를 docker group 포함
sudo usermod -aG docker ${USER}

# 터미널 재시작 후 결과 확인
id -nG

'Server > Docker' 카테고리의 다른 글

[Centos] aws linux centos에 docker로 jenkins 띄우기  (0) 2023.08.08
.net core React docker image 만드는 법  (0) 2023.04.03
Docker 명령어  (0) 2023.01.29
Docker 설치 - linux편  (0) 2023.01.29
Docker 설치 - windows편  (0) 2023.01.29

centos 서버 자체에 jenkins 설치 하는 방법에 이어 docker로 jenkins를 띄우는 방법에 대해서 알아보겠습니다.

 

1. EC2 인스터스 시작 및 설정

1) 보안 그룹 설정 시 테스트를 위해 로컬 ip에 8080(기본 Jenkins 포트) 22(SSH)를 열어 둡니다.

2. EC2 인스턴스 연결

1) SSH로 인스턴스 연결

3. Docker 설치

sudo yum update -y
sudo yum install -y docker
sudo service docker start
sudo usermod -a -G docker ec2-user

4. Jenkins Docker 이미지 실행

docker run -d -p 8080:8080 -p 50000:50000 --restart=always jenkins/jenkins:lts

5. Jenkins 초기 설정

docker exec [컨테이너 ID] cat /var/jenkins_home/secrets/initialAdminPassword

6. Jenkins 접속 확인

http://[EC2 인스턴스의 퍼블릭 IP]:8080

'Server > Docker' 카테고리의 다른 글

[Ubuntu] Docker 설치하기  (0) 2023.10.23
.net core React docker image 만드는 법  (0) 2023.04.03
Docker 명령어  (0) 2023.01.29
Docker 설치 - linux편  (0) 2023.01.29
Docker 설치 - windows편  (0) 2023.01.29

.net core 기반 React 프로젝트를 Docker로 빌드 후 배포를 해보려고 합니다.

기본으로 제공되어있는 Dockfile로는 빌드가 진행되지 않고 실패가 떨어지게 될 것 입니다.

 

RUN apt-get updateRUN apt-get install -y curlRUN apt-get install -y libpng-dev libjpeg-dev curl libxi6 build-essential libgl1-mesa-glxRUN curl -sL https://deb.nodesource.com/setup_lts.x | bash -RUN apt-get install -y nodejs

React는 node.js 위에서 동작을 하고 npm으로 설치되어있는 여러가지 라이브러리가 필요하기 때문인데요.

 

ASP.NET Core 및 React.js를 포함한 Visual Studio 컨테이너 도구 | Microsoft Learn를 참고하여 DockerFile를 수정해보겠습니다.

 

1. 추가해야 될 명령어

RUN apt-get update
RUN apt-get install -y curl
RUN apt-get install -y libpng-dev libjpeg-dev curl libxi6 build-essential libgl1-mesa-glx
RUN curl -sL https://deb.nodesource.com/setup_lts.x | bash -
RUN apt-get install -y nodejs

2. 완성된 DockerFile

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
RUN apt-get update
RUN apt-get install -y curl
RUN apt-get install -y libpng-dev libjpeg-dev curl libxi6 build-essential libgl1-mesa-glx
RUN curl -sL https://deb.nodesource.com/setup_lts.x | bash -
RUN apt-get install -y nodejs

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
RUN apt-get update
RUN apt-get install -y curl
RUN apt-get install -y libpng-dev libjpeg-dev curl libxi6 build-essential libgl1-mesa-glx
RUN curl -sL https://deb.nodesource.com/setup_lts.x | bash -
RUN apt-get install -y nodejs
WORKDIR /src
COPY ["ProjectSPA1/ProjectSPA1.csproj", "ProjectSPA1/"]
RUN dotnet restore "ProjectSPA1/ProjectSPA1.csproj"
COPY . .
WORKDIR "/src/ProjectSPA1"
RUN dotnet build "ProjectSPA1.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "ProjectSPA1.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "ProjectSPA1.dll"]

'Server > Docker' 카테고리의 다른 글

[Ubuntu] Docker 설치하기  (0) 2023.10.23
[Centos] aws linux centos에 docker로 jenkins 띄우기  (0) 2023.08.08
Docker 명령어  (0) 2023.01.29
Docker 설치 - linux편  (0) 2023.01.29
Docker 설치 - windows편  (0) 2023.01.29

https://nitpick92.tistory.com/11

 

[linux] centos7 yum nginx 삭제 및 설치 방법

centos 7 환경에서 nginx 삭제 후 재설치하는 방법에 대해서 알아보려고 합니다. 1. nginx 삭제 # 설치 여부 확인 yum list installed nginx # 삭제 yum remove {your_pakage_name} 2. nginx 설치 # 기본적으로 nginx를 제공

nitpick92.tistory.com

지난 시간에는 nginx를 설치하는 방법을 알아보았습니다.

 

docker green-blue 무중단 배포를 시도 하던 중 

Reverse-Proxy 서버 역할을 할 수 있는 그 무언가 필요하였습니다.

 

nginx를 Reverse-Proxy 서버로 사용할 수 있도록 세팅하는 방법에 대해 알아보겠습니다.

프록시 서버 이미지

ClientProxy Server에 요청을 하고
Proxy Server는 각 웹서버에 요청 후 받은 응답을
Client에 전달하는 구조 입니다.

1. nginx conf 파일 수정

  • 처음 세팅 시 default.conf를 바라보고 있는데  주석 처리를 해줍니다.
#include /etc/nginx/conf.d/*.conf;
  • server 관련 정보를 입력해줍니다.
server {
      # 들어오는 port
      listen       8080;
      server_name  localhost;

      error_page   500 502 503 504  /50x.html;
      location = /50x.html {
          root   /usr/share/nginx/html;
      }

      # 실제로 바라볼 port
      location / {
        proxy_pass http://127.0.0.1:9090;
      }
}

2. nginx 서버를 재시작 해줍니다.

sudo systemctl restart nginx
8080 포트로 들어오면 실제로는 9090포트를
바라보는 역할을 하도록 세팅을 완료하였습니다.

 

 

.net core 프로젝트JenkinsDocker를 사용하여 
linux 배포서버에 자동배포를 할 수 있도록
CI/CD 구성을 해보려고 합니다.
docker 참고 : https://nitpick92.tistory.com/4
jenkins 참고 : https://nitpick92.tistory.com/14
docker 명령어 참고 : https://nitpick92.tistory.com/5

 

1. 필요한 환경 세팅

  • 로컬 pc (Windows)
    github, docker, visual studio 2022 설치

https://www.docker.com/products/docker-desktop/
Docker Desktop 설치


https://momobob.tistory.com/m/71
WSL2 프로그램 설치

 


  • Jenkins Server (linux CentOS7)
    Jenkins, docker 설치

  • Deploy Server (linux CentOS7)
    docker설치

 


2. 기본동작 확인

자동화 배포 흐름도

  • jenkins 서버에서 github 최신 소스를 pull 받아와 build test를 진행.
  • build test 통과 후 image 제작
  • image -> docker 저장소인 docker hub에 push
  • 프로젝트에 포함돼있는 scripts/deploy.sh를 배포서버에 ssh 전송
  • deploy.sh 실행

3. 프로젝트 준비

docker desktop 동작을 확인해주세요.


 

net core 6.0으로 프로젝트를 생성해 주세요.
Docker 사용을 클릭해 주세요.


 

docker로 프로젝트 실행이 되는지 확인해주세요.

#해당 위치의 dockerfile를 사용하여 image1 생성
docker build -t image1 ./

docker image1 생성 확인

docker image 명령어를 사용하여 image를 생성을 해보세요.

# 생성된 image1 이미지를 사용하여 container1를 생성 후 동작시키는 명령어
docker run -d -p 8080:80 --name container1 image1

docker container 명령어를 사용하여 container를 생성해 보세요.

container 동작을 확인해봅니다.
정상 동작이 완료되면 준비는 끝났습니다.
자신의 Github에 레포지토리 업로드 해주세요.

4. github 접근 토큰 생성

Profile > Settings / Developer settings > Personal access tokens

만들어진 토큰을 안전한 곳에 저장해주세요.


5. github webhook 설정

Repository > Settings > Webhooks

젠킨스 서버 주소/github-webhook/을 연결해주세요.
master branch에 push시 jenkins에 알릴 수 있도록 해주는 역할입니다.

6. docker hub 접근 토큰 생성

Account Settings > Security > New Access Tokens

만들어진 토큰을 안전한 곳에 저장해주세요.


7. 젠킨스 플러그인 설치

https://nitpick92.tistory.com/14

참고하여 설치 후 젠킨스 접속 후 로그인 해주세요.

Jenkins 관리 > Plugin Manager 이동하여 하단 플러그인을 설치해주세요.

  • github integration
  • post build task
  • publish over ssh

8. 젠킨스에 배포 서버 SSH 연결

Dashboard > Jenkins 관리 > Configure System

추후에 deploy.sh파일을 배포서버에 전달해주기 위한 SSH 설정입니다.
ssh or password로 test configuration success 확인 해주시면 됩니다.

 


9. 젠킨스 Credentials Add

Jenkins 관리 > Credentials > System > Global credentials

github에서 만든 접근 토큰을 세팅해줍니다.

docker hub에서 만든 접근 토큰을 세팅해줍니다.

10. 젠킨스 Project 생성

Dashboard > 새로운 item

자신의 github 주소를 연결해주세요.

처음에 세팅한 프로젝트가 업로드된 레포지토리 주소를 적어주세요.
*/master -> master branch에 push를 할때 동작을 하려고 합니다.

Docker Hub Token을 변수에 담아서 사용하기 위한 세팅입니다.

echo $PASSWORD | docker login -u $USERNAME --password-stdin
docker build -t {도커 허브 아이디}/{이미지 네임} ./
docker push {도커 허브 아이디}/{이미지 네임}
docker rmi {도커 허브 아이디}/{이미지 네임}
최신화 된 소스를 대상으로 빌드 테스트 후 Docker Hub에 배포해줍니다.

echo $PASSWORD | docker login -u $USERNAME --password-stdin
sh deploy.sh
Jenkins -> deploy_server1로 프로젝트 scripts폴더에 있는
deploy.sh를 옮기고 실행시켜줍니다.

11. deploy.sh 추가

상단에서 세팅한 프로젝트 scripts폴더 생성 후 deploy.sh를 추가해줍니다.

# 가동중인 testcontainer1 컨테이너 중단 및 삭제
sudo docker ps -a -q --filter "name=testcontainer1" | grep -q . && docker stop testcontainer1 && docker rm testcontainer1 | true

# 기존 이미지 삭제
sudo docker rmi {본인 docker_hub_id}/testimage1

# 도커허브 이미지 pull
sudo docker pull {본인 docker_hub_id}/testimage1

# 도커 run
docker run -d -p 8080:80 --name testcontainer1 {본인 docker_hub_id}/testimage1

# 사용하지 않는 불필요한 이미지 삭제 -> 현재 컨테이너가 물고 있는 이미지는 삭제되지 않습니다.
docker rmi -f $(docker images -f "dangling=true" -q) || true

12. 배포 성공 확인

https://nitpick92.tistory.com/manage/posts/ 

컨테이너 port로 방화벽 오픈 후 배포된 웹 사이트를 확인 해보시면 됩니다.

jenkins 프로젝트 동작 성공
배포된 mvc 프로젝트

 

 

.net core + jenkins + docker를 이용하여 linux 서버에 웹 서비스를 배포하는 방법을 알아보았습니다.

 

궁금한 사항은 댓글 남겨주세요 : )

 

13. 다음에는

현재는 docker container 중지 후 시작하는 사이에는 배포된 웹 페이지에 접속이 불가능한 문제가 있어

무중단 배포에 대해 정리해보려고 합니다.

'Server > 배포 자동화' 카테고리의 다른 글

CentOS7 Jenkins 설치하기  (0) 2023.02.10

Docker 설치 - windows편 (tistory.com)

 

Docker 설치 - windows편

windows에서 docker를 설치하기 위해서 여러가지 방법이 있습니다. 그 중 가장 간단한 docker hub 설치하는 법을 정리해보도록 하겠습니다. 1. docker hub 설치 https://www.docker.com/products/docker-desktop/ Download Do

nitpick92.tistory.com

Docker란 애플리케이션을 신촉하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼입니다.

 

linux에 docker를 설치하는 법을 알아보려고 합니다.

 

1. linux에 docker 설치하는 방법

# 1.패키지 업데이트
sudo yum install -y yum-utils

# 2. yum-utils 설치후 Docker 레포지토리를 등록
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 3.최신 도커 설치
sudo yum install docker --disablerepo=docker-ce-stable

# 4.도커 설치 작업이 잘 되었는지 버전 확인
docker -v

# 5.도커 시작
sudo service docker start

# 6.docker.sock 권한
sudo chmod 666 /var/run/docker.sock

# 7.도커 그룹에 사용자 추가 -> docker가 그룹명, ec2-user가 사용자명
sudo usermod -aG docker ec2-user

# 8. docker login
docker login -u [ID]

 

'Server > Docker' 카테고리의 다른 글

[Ubuntu] Docker 설치하기  (0) 2023.10.23
[Centos] aws linux centos에 docker로 jenkins 띄우기  (0) 2023.08.08
.net core React docker image 만드는 법  (0) 2023.04.03
Docker 명령어  (0) 2023.01.29
Docker 설치 - windows편  (0) 2023.01.29

windows에서 docker를 설치하기 위해서 여러가지 방법이 있습니다.

그 중 가장 간단한 docker hub 설치하는 법을 정리해보도록 하겠습니다.

 

1. docker hub 설치

https://www.docker.com/products/docker-desktop/

 

Download Docker Desktop | Docker

Docker Desktop is available to download for free on Mac, Windows, or Linux operating systems. Get started with Docker today!

www.docker.com

 

2. wsl2 installation is incomplete 오류 해결

https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

설치 후 재부팅 하면 해결이 됩니다.

 

3. 실행 확인

 

* WSL(Windows Subsystem for Linux)란?

- Windows 운영체제에서  Linux 실행파일들을 함께 사용할 수 있도록 호환성을 추가하는 아키텍처라 할 수 있다.

'Server > Docker' 카테고리의 다른 글

[Ubuntu] Docker 설치하기  (0) 2023.10.23
[Centos] aws linux centos에 docker로 jenkins 띄우기  (0) 2023.08.08
.net core React docker image 만드는 법  (0) 2023.04.03
Docker 명령어  (0) 2023.01.29
Docker 설치 - linux편  (0) 2023.01.29

+ Recent posts