Last active
January 19, 2022 06:35
-
-
Save devlights/70d552402c5d7a55ed44d6f85c31aca2 to your computer and use it in GitHub Desktop.
My Dockerfiles
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# syntax=docker/dockerfile:1-labs | |
FROM golang:rc-bullseye | |
#--------------------------------------------- | |
# BUILD ARGUMENTS | |
#--------------------------------------------- | |
ARG UID=1000 | |
ARG GID=1000 | |
ARG USERNAME=dev | |
ARG USERPASSWD=dev | |
ARG GROUPNAME=dev | |
ARG SUDOGROUP=%dev | |
ARG PKGS="vim exuberant-ctags sudo tzdata locales file iputils-ping net-tools ncat psmisc" | |
#--------------------------------------------- | |
# ROOT OPERATIONS | |
#--------------------------------------------- | |
USER root | |
# >>> Install packages | |
RUN <<EOF | |
apt-get update -q | |
DEBIAN_FRONTEND=noninteractive apt-get install -y -q --no-install-recommends ${PKGS} | |
EOF | |
# >>> Build locales | |
RUN <<EOF | |
locale-gen ja_JP.UTF-8 | |
localedef -i ja_JP -c -f UTF-8 -A /usr/share/locale/locale.alias ja_JP.UTF-8 | |
ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime | |
rm -rf /var/lib/apt/lists/* | |
EOF | |
# >>> Create user with sudo permission | |
RUN <<EOF | |
groupadd -g ${GID} ${USERNAME} | |
useradd -m -s /bin/bash -u ${UID} -g ${GID} ${USERNAME} | |
echo "${USERNAME}:${USERPASSWD}" | chpasswd | |
echo "${SUDOGROUP} ALL=(ALL) ALL" > /etc/sudoers.d/dev | |
EOF | |
# >>> Define environments | |
ENV LANG ja_JP.UTF-8 | |
ENV LANGUAGE ja_JP:ja | |
ENV LC_ALL ja_JP.UTF-8 | |
ENV TZ Asia/Tokyo | |
#--------------------------------------------- | |
# NON-ROOT USER OPERATIONS | |
#--------------------------------------------- | |
USER dev | |
# >>> Install go packages | |
RUN <<EOF | |
go install golang.org/x/tools/cmd/goimports@latest | |
go install honnef.co/go/tools/cmd/staticcheck@latest | |
go install github.com/go-delve/delve/cmd/dlv@latest | |
go clean -modcache | |
EOF | |
# >>> Copy vim config file | |
COPY ./vimrc.docker /home/${USERNAME}/.vimrc | |
# >>> Set working directory | |
WORKDIR /workspace | |
#--------------------------------------------- | |
# MISC | |
#--------------------------------------------- | |
EXPOSE 8888 | |
VOLUME /workspace |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# syntax=docker/dockerfile:1-labs | |
FROM buildpack-deps:stable-scm | |
#--------------------------------------------- | |
# BUILD ARGUMENTS | |
#--------------------------------------------- | |
ARG UID=1000 | |
ARG USERNAME=dev | |
ARG HOMEDIR=/home/${USERNAME} | |
ARG PKGS_ESSENTIAL="zip unzip bash-completion build-essential sudo file time less man-db" | |
ARG PKGS_EDITOR="vim exuberant-ctags" | |
ARG PKGS_LOCALE="tzdata locales" | |
ARG PKGS_UTILS="jq lsof iputils-ping net-tools ncat psmisc" | |
#--------------------------------------------- | |
# ROOT OPERATIONS | |
#--------------------------------------------- | |
USER root | |
# >>> Install packages | |
ENV DEBIAN_FRONTEND=noninteractive | |
RUN <<EOF | |
apt-get update -q | |
apt-get install -yq --no-install-recommends ${PKGS_ESSENTIAL} ${PKGS_EDITOR} ${PKGS_LOCALE} ${PKGS_UTILS} | |
apt-get clean -y | |
rm -rf /var/cache/debconf/* /var/lib/apt/lists/* /tmp/* /var/tmp/* | |
EOF | |
ENV DEBIAN_FRONTEND= | |
# >>> Build locales | |
RUN <<EOF | |
locale-gen ja_JP.UTF-8 | |
localedef -i ja_JP -c -f UTF-8 -A /usr/share/locale/locale.alias ja_JP.UTF-8 | |
ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime | |
EOF | |
ENV LANG=ja_JP.UTF-8 | |
ENV LANGUAGE ja_JP:ja | |
ENV LC_ALL ja_JP.UTF-8 | |
ENV TZ Asia/Tokyo | |
# >>> Create user with sudo permission | |
RUN <<EOF | |
useradd -l -u ${UID} -G sudo -md ${HOMEDIR} -s /bin/bash -p ${USERNAME} ${USERNAME} | |
sed -i.bkp -e 's/%sudo\s\+ALL=(ALL\(:ALL\)\?)\s\+ALL/%sudo ALL=NOPASSWD:ALL/g' /etc/sudoers | |
EOF | |
ENV HOME=${HOMEDIR} | |
WORKDIR $HOME | |
#--------------------------------------------- | |
# NON-ROOT USER OPERATIONS | |
#--------------------------------------------- | |
USER dev | |
# >>> Base settings | |
RUN <<EOF | |
sudo echo "Running 'sudo' for dev: success" | |
mkdir -p /home/dev/.bashrc.d | |
(echo; echo "for i in \$(ls -A \$HOME/.bashrc.d/); do source \$HOME/.bashrc.d/\$i; done"; echo) >> /home/dev/.bashrc | |
EOF | |
# >>> Vim settings | |
RUN <<EOF | |
git clone https://gist.github.com/1a16cd5b551fe4e76ae941abb658b893.git vim-config-files | |
cp vim-config-files/.vimrc ${HOMEDIR} | |
rm -rf vim-config-files | |
EOF | |
# >>> Homebrew settings | |
RUN <<EOF | |
mkdir ~/.cache | |
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" | |
EOF | |
ENV PATH=$PATH:/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin/ | |
ENV MANPATH="$MANPATH:/home/linuxbrew/.linuxbrew/share/man" | |
ENV INFOPATH="$INFOPATH:/home/linuxbrew/.linuxbrew/share/info" | |
ENV HOMEBREW_NO_AUTO_UPDATE=1 | |
#--------------------------------------------- | |
# MISC | |
#--------------------------------------------- | |
WORKDIR /workspace | |
VOLUME /workspace |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment