From 3853263b44172490772e412e7a44f584b188bd8e Mon Sep 17 00:00:00 2001 From: Ivan Santos <301291+pragmaticivan@users.noreply.github.com> Date: Thu, 4 Jul 2024 15:57:40 -0500 Subject: [PATCH] chore: docker setup --- Dockerfile | 62 ++++++++++++++++++++++++++++++++++++------------------ Makefile | 38 +++++++++++++++++++++++---------- 2 files changed, 68 insertions(+), 32 deletions(-) diff --git a/Dockerfile b/Dockerfile index 581ac74..72ecd3f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,32 +1,52 @@ -FROM ubuntu:22.04 +ARG BASE_IMAGE=ubuntu:22.04 + +# ======================================== +# Base environment +# ======================================== + +FROM ${BASE_IMAGE} as base + +# Avoid the following error: +# curl: (77) error setting certificate file: /etc/ssl/certs/ca-certificates.crt +RUN apt-get update && apt-get install -y --no-install-recommends \ + ca-certificates + +# Install minimum requirements +RUN apt-get install -y --no-install-recommends \ + sudo \ + git \ + wget \ + curl ARG USERNAME=pragmaticivan ARG USER_UID=1000 -ARG USER_GID=$USER_UID +ARG USER_GID=${USER_UID} +<<<<<<< Updated upstream ENV TZ=America/Chicago +======= +<<<<<<< Updated upstream +ENV TZ=Asia/Tokyo +>>>>>>> Stashed changes RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone +======= +RUN groupadd --gid ${USER_GID} ${USERNAME} \ + && useradd --uid ${USER_UID} --gid ${USER_GID} -m ${USERNAME} -G sudo -s /bin/bash \ + && echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers \ + && echo 'Defaults verifypw = any' >> /etc/sudoers +USER ${USERNAME} +>>>>>>> Stashed changes -RUN apt-get update && \ - apt-get install -y --no-install-recommends \ - curl \ - git \ - bats \ - kcov \ - sudo \ - tzdata \ - parallel \ - build-essential \ - ca-certificates +WORKDIR /home/${USERNAME} -RUN groupadd --gid $USER_GID $USERNAME \ - && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME -G sudo -s /bin/bash \ - && echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers - -USER $USERNAME -WORKDIR /home/$USERNAME/.local/share/chezmoi +FROM base as dev +# Install chezmoi RUN sudo sh -c "$(curl -fsLS get.chezmoi.io)" -- -b /usr/local/bin -RUN mkdir -p ~/.local/share/fonts -RUN mkdir -p /tmp +# Install requirements for testing +RUN sudo apt-get install -y --no-install-recommends \ + bats \ + kcov + +WORKDIR /home/${USERNAME}/.local/share/chezmoi diff --git a/Makefile b/Makefile index 7152af6..f73e861 100644 --- a/Makefile +++ b/Makefile @@ -1,19 +1,35 @@ DOCKER_IMAGE_NAME=dotfiles -DOCKER_ARCH=x86_64 -DOCKER_NUM_CPU=4 -DOKCER_RAM_GB=4 - +DOCKER_PLATFORM=linux/amd64 # # Docker # -.PHONY: docker -docker: - @if ! docker inspect $(DOCKER_IMAGE_NAME) &>/dev/null; then \ - docker build -t $(DOCKER_IMAGE_NAME) . --build-arg USERNAME="$$(whoami)"; \ - fi - docker run -it -v "$$(pwd):/home/$$(whoami)/.local/share/chezmoi" dotfiles /bin/bash --login - +.PHONY: docker-build-base +docker-build-base: + docker build -t $(DOCKER_IMAGE_NAME) \ + --target base \ + --platform $(DOCKER_PLATFORM) . \ + --build-arg USERNAME="$$(whoami)" + +.PHONY: docker-run-base +docker-run-base: docker-build-base + docker run --rm -it \ + --platform $(DOCKER_PLATFORM) $(DOCKER_IMAGE_NAME) \ + /bin/bash --login + +.PHONY: docker-build-dev +docker-build-dev: + docker build -t $(DOCKER_IMAGE_NAME) \ + --target dev \ + --platform $(DOCKER_PLATFORM) . \ + --build-arg USERNAME="$$(whoami)" + +.PHONY: docker-run-dev +docker-run-dev: docker-build-dev + docker run --rm -it \ + -v "$$(pwd):/home/$$(whoami)/.local/share/chezmoi" \ + --platform $(DOCKER_PLATFORM) $(DOCKER_IMAGE_NAME) \ + /bin/bash --login # # Chezmoi #