Dockerfile 和 docker-compose.yml 範例


 以下直接藉由 container 設定檔來說明.

1. Dockerfile: 這是一個 Dockerfile 的設定檔, 定義了 Unix 的OS, 及需要安裝的 Packages. 

  • #1: 設定告訴 Docker, OS為 Ubuntu , 版本為 20.04
  • #2: 先把互動訊息關閉
  • #4: 把工作目錄換到 app, 安裝一些必要的 app.
  • #~: 下面我們先安裝 Python3 和 常用的 unix 工具.
  • #-1: 最後, 把目錄換回de

 FROM ubuntu:20.04
 ARG DEBIAN_FRONTEND=noninteractive

 WORKDIR /usr/src/app

 RUN apt-get update && \
     apt-get install -y sudo && \
     apt-get install -y iputils-ping && \
     apt-get install -y --no-install-recommends apt-utils && \
     apt-get install python3.8 -y && \
     apt-get update -y && \
     apt-get install -y pkg-config python3.8-dev libmysqlclient-dev build-essential && \
     apt-get install -y git && \
     apt-get install -y python3-pip && \
     apt-get -y install unixodbc-dev && \
     python3.8 -m pip install pip --upgrade && \
     python3.8 -m pip install psycopg2-binary && \
     python3.8 -m pip install sensible && \
     python3.8 -m pip install pandas && \
     python3.8 -m pip install numpy && \
     python3.8 -m pip install scikit-learn && \
     python3.8 -m pip install pyspark && \
     apt-get install -y python-setuptools && \
     apt-get install -y libssl-dev && \
     apt-get install -y libffi-dev && \
     apt-get install -y libkrb5-dev && \
     apt-get install -y postgresql-client -y && \
     apt-get install curl -y && \
     apt-get install unzip && \
     apt-get install vim -y && \
     apt-get install python3.8-venv -y && \
     apt-get install -y locales && \
     apt-get install postgresql-client -y && \
     apt-get update && \
     pip3 install sqlfluff && \
     pip3 install --upgrade pip

 WORKDIR /app/de

2. docker-compose.yml: 接著來設定需要啟動的 containers. 以下我們打算啟動兩個服務, Ubuntu OS 系統PostgreSQL DB.

  • #1: 第一行是文件版本, 可以依照文檔的不斷更新, 進版版號. 此版說明文件, 先定為初始1.0版.
  • #2: 接下來需要定義要啟動的服務. 本立要啟動的是 一個 Unix一個 Database. #4 和 #19 為服務的名稱.
  • #7 & #20: 採用的 imageISO 名稱. 
  • #4: Ubuntu 的配置文件, 也就是上面的 Dockerfile.
  • #9 & #26: 為 container 內部folder 和 外部folder 的連結. 
  • #14 & #29: 連結 port #
  • #17: 我們希望 Ubuntu可以存取 Database, 所以在這邊加上連結. 

version: '1.0'
services:
  ubuntu:
    build:
      context: .
      dockerfile: Dockerfile
    image: ubuntu:20.04
    container_name: de-2024
    volumes:
      - "../de_project/src/main:/app/de"
    command: /bin/bash
    stdin_open: true
    tty: true
    ports:
      - "8080:8080"
    links:
      - database

  database:
    image: postgres:14.0
    container_name: de-2024-pgdb
    environment:
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: admin
      PGDATA: /var/lib/postgresql/data/pgdata
    volumes:
      - "../postgres:/var/lib/postgresql/data"
      - "../logs/db/logs:/var/log"
    ports:
      - "5432:5432"

設定好了兩個檔案, 即可開啟 terminal, build up containers.

~ docker-compose -f docker-compose.yml up --build

進入到 Ubuntu container, 其中 de-2024 為 container 名稱, 如果你的名稱, 這邊也需要修改, 才能進到 container 裡面.

~ docker exec -ti de-2024 bash

到此環境已經設定完成, 我們就可以開始程式的開發.

張貼留言

0 留言