Skip to content

2. Membuat Dockerfile

Imron Rosdiana edited this page Jun 14, 2018 · 2 revisions

Pada tahap ini, kita akan membuat sebuah docker image (kita sebut container). Berikut ini adalah langkah-langkahnya:

  1. Buat satu file Dockerfile di directory yang kamu kehendaki, misalnya saya buat Dockefile di dalam /home/Users/Docker.
  2. Di dalam Dockerfile itu berisi perintah-perintah yang biasa di gunakan dalam Linux, maka dalam hal ini, untuk bisa membuat docker container, kita diwajibkan mengerti sistem operasi Linux. Berikut adalah contoh isi dari Dockerfile:
FROM node:8.11.2

# Install basic
RUN apt-get update \
        && apt-get install -y unzip \
        && apt-get install -y --no-install-recommends apt-utils

# Install Java
ENV JAVA_HOME=/usr/lib/jvm/java-8-oracle/

RUN echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee /etc/apt/sources.list.d/webupd8team-java.list \
    && echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list \
    && apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886 \
    && apt-get update \
    && echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections \
    && apt-get -y install oracle-java8-installer

# Install Android SDK
ENV ANDROID_HOME=/opt/android-sdk-linux

RUN mkdir "${ANDROID_HOME}" \
	&& echo ANDROID_HOME="${ANDROID_HOME}" >> /etc/environment \
	&& wget --quiet https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip \
	&& unzip sdk-tools-linux-3859397.zip -d "${ANDROID_HOME}" \
	&& rm sdk-tools-linux-3859397.zip

RUN yes | "${ANDROID_HOME}"/tools/bin/sdkmanager --licenses \
	&& "${ANDROID_HOME}"/tools/bin/sdkmanager "platform-tools" \
    && "${ANDROID_HOME}"/tools/bin/sdkmanager "build-tools;26.0.2" \
	&& "${ANDROID_HOME}"/tools/bin/sdkmanager "extras;android;m2repository" \
	&& "${ANDROID_HOME}"/tools/bin/sdkmanager "extras;google;m2repository" \
    && "${ANDROID_HOME}"/tools/bin/sdkmanager "platforms;android-26"

# Install Gradle
ENV GRADLE_VERSION=4.4

RUN wget https://services.gradle.org/distributions/gradle-"${GRADLE_VERSION}"-all.zip -q \
    && mkdir /opt/gradle \
    && unzip -d /opt/gradle gradle-"${GRADLE_VERSION}"-all.zip \
    && rm gradle-"${GRADLE_VERSION}"-all.zip

# Setup environment
ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tool/tools/bin:${ANDROID_HOME}/platform-tools:/opt/gradle/gradle-"$GRADLE_VERSION"/bin

# Clear all cache & Delete unused package
RUN rm -rf /tmp/* /var/cache/apk/*

Penjelasan:

  • Tag FROM digunakan untuk parent container (container baru yang akan kita buat berdasarkan parent tersebut). Kenapa di sini saya menggunakan parent container? Karena jika kita buat dari awal, itu akan memakan waktu, jadi lebih baik pakai saja parent container yang sudah ada dan kita tinggal mengcustomnya sesuai kebutuhan kita sendiri.
  • Tag RUN digunakan untuk menjalankan perintah Linux. Nah inilah kenapa kita wajib mengetahui perintah-perintah Linux. Pada contoh di atas saya menggunakan parent container dari node:8.11.2 yang mana, itu berdasarkan dari Linux Debian Jessie.
  • Tag ENV digunakan untuk men-sets environment variable yang digunakan untuk setiap perintah-perintah di bawahnya.

Sumbers:

  1. Jalankan perintah di bawah ini untuk melakukan proses build image:
$ cd /home/Users/Docker
$ docker build -t nama_docker_yang_diinginkan .
  1. Setelah proses build selesai, maka jika kita menjalankan perintah docker image ls, maka akan terlihat image baru yang berhasil kita buat sebelumnya.

Clone this wiki locally