Python adalah bahasa pemrograman tujuan umum yang populer digunakan untuk berbagai macam aplikasi. Ini digunakan oleh pengembang perangkat lunak sebagai bahasa dukungan untuk kontrol dan manajemen build, pengujian, dan tujuan lainnya.
Docker adalah platform kemas sumber terbuka yang memungkinkan Anda menjalankan aplikasi dalam wadah ringan. Dengan cara ini aplikasi Anda berjalan dengan cara yang persis sama seperti yang akan dilakukan dalam produksi menggunakan sistem operasi yang sama.
Dalam posting ini, kami akan menunjukkan kepada Anda cara melakukan dockerize aplikasi Python dengan Miniconda di CentOS 8.
Prasyarat
- Server CentOS 8 baru di Atlantic.Net Cloud Platform
- Kata sandi root yang dikonfigurasi di server Anda
Langkah 1 – Buat Server Cloud Atlantic.Net
Pertama, masuk ke Server Cloud Atlantic.Net Anda. Buat server baru, pilih CentOS 8 sebagai sistem operasi dengan setidaknya 2GB RAM. Hubungkan ke Server Cloud Anda melalui SSH dan masuk menggunakan kredensial yang disorot di bagian atas halaman.
Setelah Anda masuk ke server CentOS 8 Anda, jalankan perintah berikut untuk memperbarui sistem dasar Anda dengan paket terbaru yang tersedia.
dnf update -y
Langkah 2 – Instal Docker CE
Anda dapat menambahkannya dengan perintah berikut:
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
Setelah repo dibuat, jalankan perintah berikut untuk menginstal Docker CE di sistem Anda.
dnf install docker-ce --nobest
Setelah instalasi selesai, mulai layanan Docker dan aktifkan untuk memulai pada sistem reboot dengan perintah berikut:
systemctl start docker systemctl enable docker
Selanjutnya, verifikasi versi Docker yang terinstal dengan perintah berikut:
docker --version
Anda akan mendapatkan output berikut:
Docker version 20.10.5, build 55c4c88
Langkah 3 – Buat File Docker untuk Menerapkan Aplikasi Python
Di bagian ini, kita akan membuat direktori untuk proyek Python dan membuat Dockerfile dengan semua informasi yang diperlukan untuk menerapkan aplikasi Python.
Pertama, buat direktori dengan perintah berikut:
mkdir project
Selanjutnya, ubah direktori menjadi project dan buat Dockerfile dengan perintah berikut:
cd project nano Dockerfile
Tambahkan baris berikut:
FROM python:slim RUN apt-get update && apt-get -y upgrade \ && apt-get install -y --no-install-recommends \ git \ wget \ g++ \ ca-certificates \ && rm -rf /var/lib/apt/lists/* ENV PATH="/root/miniconda3/bin:${PATH}" ARG PATH="/root/miniconda3/bin:${PATH}" RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh \ && mkdir /root/.conda \ && bash Miniconda3-latest-Linux-x86_64.sh -b \ && rm -f Miniconda3-latest-Linux-x86_64.sh \ && echo "Running $(conda --version)" && \ conda init bash && \ . /root/.bashrc && \ conda update conda && \ conda create -n python-app && \ conda activate python-app && \ conda install python=3.6 pip && \ echo 'print("Hello World!")' > python-app.py RUN echo 'conda activate python-app \n\ alias python-app="python python-app.py"' >> /root/.bashrc ENTRYPOINT [ "/bin/bash", "-l", "-c" ] CMD ["python python-app.py"]
Simpan dan tutup file setelah Anda selesai.
File di atas akan mengunduh gambar minimal Python, menginstal Miniconda, membuat lingkungan Python, dan membuat aplikasi Hello World sederhana.
Langkah 4 – Bangun Gambar Aplikasi Python
Sekarang, Anda perlu membuat image menggunakan Dockerfile yang telah kita buat di langkah sebelumnya.
Pertama, ubah direktori menjadi project dengan perintah berikut:
cd project
Selanjutnya, build aplikasi Python dengan menjalankan perintah berikut:
docker build -t python-app .
Anda akan mendapatkan output berikut:
Downloading and Extracting Packages setuptools-52.0.0 | 724 KB | ########## | 100% certifi-2020.12.5 | 140 KB | ########## | 100% python-3.6.13 | 29.7 MB | ########## | 100% pip-21.0.1 | 1.8 MB | ########## | 100% Preparing transaction: ...working... done Verifying transaction: ...working... done Executing transaction: ...working... done Removing intermediate container 10f97804ad82 ---> 3662950574f9 Step 6/8 : RUN echo 'conda activate python-app \nalias python-app="python python-app.py"' >> /root/.bashrc ---> Running in faab9e188650 Removing intermediate container faab9e188650 ---> 8ee98d205c5c Step 7/8 : ENTRYPOINT [ "/bin/bash", "-l", "-c" ] ---> Running in 3e74eb8fd8b7 Removing intermediate container 3e74eb8fd8b7 ---> 6c6d83dfd01f Step 8/8 : CMD ["python python-app.py"] ---> Running in 4d8c066aeefc Removing intermediate container 4d8c066aeefc ---> 78e4f8e7e05e Successfully built 78e4f8e7e05e Successfully tagged python-app:latest
Anda sekarang dapat memeriksa gambar yang diunduh dengan perintah berikut:
docker images
Anda akan melihat semua gambar dalam output berikut:
REPOSITORY TAG IMAGE ID CREATED SIZE python-app latest 78e4f8e7e05e 24 seconds ago 907MB python slim ce689abb4f0d 10 days ago 118MB
Langkah 5 – Luncurkan Penampung
Pada titik ini, gambar aplikasi Python sudah siap. Anda sekarang dapat meluncurkan wadah dari gambar python-app dengan perintah berikut:
docker run python-app
Anda akan melihat output dari aplikasi python Anda di output berikut:
Hello World!
Anda juga dapat terhubung ke wadah aplikasi Python dan menjalankan aplikasi.
Untuk melakukannya, jalankan container lagi dengan perintah berikut:
docker run -it python-app /bin/bash
Anda akan terhubung ke wadah python-app seperti yang ditunjukkan di bawah ini:
(python-app) [email protected]:/#
Sekarang, jalankan aplikasi Python Hello World Anda menggunakan perintah berikut:
(python-app) [email protected]:/# python-app
Anda akan mendapatkan output berikut:
Hello World!
Anda juga dapat memverifikasi versi Python Anda menggunakan perintah berikut:
(python-app) [email protected]:/# python --version
Keluaran:
Python 3.6.13 :: Anaconda, Inc.
Anda sekarang dapat keluar dari wadah dengan perintah berikut:
(python-app) [email protected]:/# exit
Kesimpulan
Dalam panduan di atas, Anda telah mempelajari cara melakukan dockerisasi aplikasi Python dengan Miniconda di CentOS 8. Sekarang Anda dapat menerapkan aplikasi Python Anda dalam lingkungan yang ringan dan terkemas di akun hosting VPS Anda dari Atlantic.Net.