diff --git a/jenkins-script/Dockerfile b/jenkins-script/Dockerfile new file mode 100644 index 000000000..ddfdeaeea --- /dev/null +++ b/jenkins-script/Dockerfile @@ -0,0 +1,14 @@ +FROM jenkins/jenkins:latest +USER root + +COPY scripts/install-awscli.sh /install-awscli.sh +RUN chmod u+x /install-awscli.sh && \ + /install-awscli.sh + +COPY scripts/install-docker.sh /install-docker.sh +RUN chmod u+x /install-docker.sh && \ + /install-docker.sh + +COPY scripts/install-docker-compose.sh /install-docker-compose.sh +RUN chmod u+x /install-docker-compose.sh && \ + /install-docker-compose.sh \ No newline at end of file diff --git a/jenkins-script/docker-compose.yml b/jenkins-script/docker-compose.yml new file mode 100644 index 000000000..f2cac7076 --- /dev/null +++ b/jenkins-script/docker-compose.yml @@ -0,0 +1,16 @@ +version: '3.9' +services: + jenkins: + build: + context: . + container_name: jenkins + user: root + privileged: true + environment: + TZ: "Asia/Seoul" + JAVA_OPTS: "-Dhudson.model.DownloadService.noSignatureCheck=true" + ports: + - "8080:8080" + volumes: + - "./jenkins:/var/jenkins_home" + - "/var/run/docker.sock:/var/run/docker.sock" \ No newline at end of file diff --git a/jenkins-script/install-docker-compose.sh b/jenkins-script/install-docker-compose.sh new file mode 100644 index 000000000..08a4cf385 --- /dev/null +++ b/jenkins-script/install-docker-compose.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +## INFO: https://docs.docker.com/compose/install/ + +set -euf pipefail +DOCKER_COMPOSE_VERSION=v2.1.1 + +# Download and install +sudo curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose +sudo chmod +x /usr/local/bin/docker-compose \ No newline at end of file diff --git a/jenkins-script/install-docker.sh b/jenkins-script/install-docker.sh new file mode 100644 index 000000000..eb70502f4 --- /dev/null +++ b/jenkins-script/install-docker.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +## INFO: https://docs.docker.com/engine/install/ubuntu/ + +set -euf pipefail + +# 일반계정 이름으로 +DOCKER_USER=ubuntu + +# Install dependencies +sudo apt-get update && sudo apt-get install -y \ + apt-transport-https \ + ca-certificates \ + curl \ + gnupg \ + lsb-release + +# Add Docker’s official GPG key +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --yes --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg + +# Set up the stable repository +echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ + $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + +# Install Docker CE +sudo apt-get update && sudo apt-get install -y docker-ce docker-ce-cli containerd.io + +# Use Docker without root +sudo usermod -aG docker $DOCKER_USER \ No newline at end of file diff --git a/jenkins-script/scripts/install-awscli.sh b/jenkins-script/scripts/install-awscli.sh new file mode 100644 index 000000000..5a27c7e1f --- /dev/null +++ b/jenkins-script/scripts/install-awscli.sh @@ -0,0 +1,4 @@ +curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" +sudo apt install unzip -y +unzip awscliv2.zip +sudo ./aws/install \ No newline at end of file diff --git a/jenkins-script/scripts/install-docker-compose.sh b/jenkins-script/scripts/install-docker-compose.sh new file mode 100644 index 000000000..4dbcc20da --- /dev/null +++ b/jenkins-script/scripts/install-docker-compose.sh @@ -0,0 +1,9 @@ +#!/bin/bash +## INFO: https://docs.docker.com/compose/install/ + +set -euf pipefail +DOCKER_COMPOSE_VERSION=v2.1.1 + +# Download and install +curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose +chmod +x /usr/local/bin/docker-compose \ No newline at end of file diff --git a/jenkins-script/scripts/install-docker.sh b/jenkins-script/scripts/install-docker.sh new file mode 100644 index 000000000..1301d4aa6 --- /dev/null +++ b/jenkins-script/scripts/install-docker.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +apt-get update && apt-get install -y apt-transport-https \ + ca-certificates curl gnupg2 \ + software-properties-common + +curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - +apt-key fingerprint 0EBFCD88 +add-apt-repository \ + "deb [arch=amd64] https://download.docker.com/linux/debian \ + $(lsb_release -cs) stable" + +apt-get update && apt-get install -y docker-ce-cli \ No newline at end of file