Docker: PostgreSQL Backup & Restore

前言 前陣子因為專案需求,需要把某個 docker 的 PostgreSQL container 資料備份到另一台 docker container 內,因此紀錄一下整體過程 簡例 首先,先拉取 postgresql 14.6 版的 image docker pull postgres:14.6 docker image | grep postgres # 取得image id 再來準備一份測試的 seed.csv,等等要匯入 postgresql 中 title,content Eric,Hello Madi,Hi Danny,GoAhead Kyle,Looks grood 將 postgresql 的 container 跑起來,並 bind mount 掛載剛剛的 csv 檔 docker run -itd --rm --name example -p 5432:5432 -v "$(pwd)"/seed.csv:/seed.csv -e POSTGRES_PASSWORD=postgres <image_id> 接著,跳進去 container 內,把 csv 的內容匯入 postgresql 中 docker exec -it example psql -U postgres -d postgres /* 要先依照csv的內容建立table */ CREATE TABLE article(title text, content text); /* 將csv匯入table */ COPY article (title, content) FROM '/seed....

<span title='2023-01-31 00:49:13 +0800 +0800'>January 31, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;328 words&nbsp;·&nbsp;Madi

為何Mac建置的Docker映像檔無法運行於Ubuntu上?

前言 前陣子入手一台 MacBook Pro,CPU 處理器是 Apple 自家的 M2 晶片,開發上意外發現使用 docker build 的 image 會無法運行在 AWS EC2 上的 Ubuntu 作業系統上,明顯違反了 docker 的口號: Build once, run everywhere,深入研究後才理解,原來這是跟 CPU 處理器的架構有關,稍微紀錄一下來龍去脈和問題解法,以供未來的自己回來參考 以 Python FastAPI 簡例還原問題 建置本地端的 docker image 首先,為了還原遇到的問題,用 python:3.9-slim 的 image 來 host 一個 container,並在裡頭運行一個簡單的 FastAPI server Python 環境建置、套件安裝 python3 -m venv venv source ./venv/bin/activate pip3 install fastapi uvicorn pip3 freeze > requirements.txt 並準備 FastAPI 主程式 from fastapi import FastAPI import uvicorn app = FastAPI() @app....

<span title='2023-01-25 21:49:13 +0800 +0800'>January 25, 2023</span>&nbsp;·&nbsp;3 min&nbsp;·&nbsp;501 words&nbsp;·&nbsp;Madi