우분투에서 Docker compose로 모든 컨테이너 한방에 실행하기

노문택·2022년 4월 25일
0

해당 과정은 tekiescommunity backend ci/cd를 하면서 한번 해보았다 그러나 그때는 대강 짚고넘어갔지만 여기서 자세히 다루도록한다..

docker compose 사용해서 jenkins 실행해보기

Docker-compose 왜쓰나요 ?

위에 링크의 포스트에서도 나와있지만 그래도 중요하기에 한번더! -> 한번에 모든 컨테이너 실행 및 순서 세팅이가능
추가적으로 server가 여러개인 경우 compose.yml 파일만 옮기고 함으로써 쉽게 클라우드 환경이 가능하다! 그래서씀!!!

그럼 도커 와 도커 compose 설치해보기

  1. docker compose를 위해서라면 docker가있어야한다.. docker 설치부터..
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
sudo apt update
apt-cache policy docker-ce
sudo apt install docker-ce

차례대로 입력 도스창 스샷은 따로 첨부 X

sudo systemctl status docker

이 명령어로 확인만 해보자

잘돌아가고있으면 docker compose 마저설치 ㄱ

2.4.1 최신버전으로 깔아봅시다. (https://github.com/docker/compose/releases) 여기서 확인가능

sudo curl -L https://github.com/docker/compose/releases/download/v2.4.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo usermod -aG docker $USER

차례대로 입력해주기 세팅에 관련된부분임

docker-compose --version

버전 확인해보기

경로는 다음과 같이만들기

docker
|-- docker-compose.yml
|-- nginx
|-- mysql
|-- jenkins
sudo chmod -R 777 nginx
sudo chmod -R 777 mysql
sudo chmod -R 777 jenkins

로컬 볼륨으로 저장할 공간 권한 미리주기

docker-compose.yml을 다음과 같이 작성해준다.

version: '2'

services:
  mysql_db:
    image: mysql:5.7
    container_name: mysql-db
    environment:
      - MYSQL_DATABASE=ssam
	  - MYSQL_ROOT_PASSWORD=ssafya403hanlim
	  - TZ=Asia/Seoul
    ports:
	  - 3306:3306
    volumes:
	  - ./mysql:/var/lib/mysql # db 볼륨 처리
sudo docker-compose up -d
sudo docker ps -a

mysql volume에도 잘저장되어있따.

추가적으로 jenkins와 nginx도 해주자

  jenkins:
    image: 'jenkins/jenkins:lts-jdk8'
    container_name: 'jenkins'
    ports:
      - '5000:5000'
      - "50010:50000"
    expose:
      - "8080"
      - "50000"
    volumes:
      - '/var/jenkins_home:/var/jenkins_home'
      - '/var/run/docker.sock:/var/run/docker.sock'
    environment:
      TZ: "Asia/Seoul"
  nginx:
    image: nginx:1.21.5-alpine
    ports:
      - 80:80
    volumes:
      - ./proxy/nginx.conf:/etc/nginx/nginx.conf
    container_name: myweb-proxy

젠킨스 기본포트가 8080 으로 되어있는데 5000: 5000 하면 에러남

그냥 jenkins를 자체를 받으면 아래에서 수정하면되고

sudo vim /etc/sysconfig/jenkins

docker compose버전은 잘모르겠다 ㅎㅎ;; 그냥 ports를 5000:8080 으로 사용함


  jenkins:
    restart: always
    container_name: jenkins
    image: jenkins/jenkins
    ports:
      - "8080:8080"
    volumes:
      - "./jenkins:/var/jenkins_home"

여러가지 변경후 총 합본

version: '3.1'

services:
  mysql_db:
    image: mysql:5.7
    container_name: mysql-db
    environment:
      - MYSQL_DATABASE=ssam
	  - MYSQL_ROOT_PASSWORD=ssafya403hanlim
	  - TZ=Asia/Seoul
    ports:
	  - 3306:3306
    volumes:
	  - ./mysql:/var/lib/mysql # db 볼륨 처리
  jenkins:
    restart: always
    container_name: jenkins
    image: jenkins/jenkins
    ports:
      - "8080:8080"
    volumes:
      - "./jenkins:/var/jenkins_home"
  nginx:
    image: nginx:1.21.5-alpine
    ports:
      - 80:80
    volumes:
      - ./proxy/nginx.conf:/etc/nginx/nginx.conf
    container_name: myweb-proxy

실행 ㄱ

sudo docker-compose up -d 

휴;; 이제 다됨..

추가적인 설정은 알아서 하도록 해보자 ㅎㅎ;; docker-compose로 작성해두면 쉽게 클라우드 환경에서 복사가 가능!!

게다가 volume 설정으로 그냥 storage까지 가능하니 클라우드가 좀더 편해졋다 ㅎㅎ;; 아무튼 여까지

profile
노력하는 뚠뚠이

0개의 댓글