Top

환경

docker-ce 설치

레거시 버전 제거:

sudo apt remove -y \
	docker \
	docker-engine \
	docker.io \
	containerd runc

의존성 패키지 설치:

sudo apt install -y \
	apt-transport-https \
	ca-certificates \
	curl \
	gnupg \
	gnupg-agent \
	software-properties-common

도커 gpg 설치 및 패키지 저장소 등록:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo \
	"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
	$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

docker 설치:

sudo apt-get update

sudo apt-get install \
	docker-ce \
	docker-ce-cli \
	containerd.io

docker 설치 테스트:

sudo docker run hello-world

docker-compose 1.29.2설치

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

docker-compose로 postgresql과 pgadmin 설치

docker-compose.yml 파일:

version: '1.0'

volumes:
    postgres:
    pgadmin:

services:
  postgres:
    container_name: firstalchemy-pgadmin-devel
    image: "postgres:13.3"
    environment:
      POSTGRES_DB: "firstalchemy"
      POSTGRES_USER: "postgres"
      POSTGRES_PASSWORD: "1234"
      PGDATA: "/data/postgres"
    volumes:
      - postgres:/data/postgres
      - ./docker_postgres_init.sql:/docker-entrypoint-initdb.d/docker_postgres_init.sql
    ports:
      - "15432:5432"
    restart: unless-stopped
    
  pgadmin:
    container_name: first-alchemy-pgadmin-devel
    image: "dpage/pgadmin4:5.4"
    environment:
      PGADMIN_DEFAULT_EMAIL: hong@gil.dong
      PGADMIN_DEFAULT_PASSWORD: 1234
      PGADMIN_CONFIG_SERVER_MODE: "False"
      PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED: "False"
    volumes:
      - pgadmin:/data/pgadmin
      - ./docker_pgadmin_servers.json:/pgadmin4/servers.json
    ports:
      - "15433:80"
    entrypoint:
      - "/bin/sh"
      - "-c"
      - "/bin/echo 'firstalchemy:5432:*:postgres:1234' > /tmp/pgpassfile && chmod 600 /tmp/pgpassfile && /entrypoint.sh"
    restart: unless-stopped

docker_pgadmin_servers.json 파일:

{
    "Servers": {
      "1": {
        "Name": "firstalchemy",
        "Group": "Servers",
        "Port": 5432,
        "Username": "postgres",
        "Host": "postgres",
        "SSLMode": "prefer",
        "MaintenanceDB": "firstalchemy",
        "PassFile": "/tmp/pgpassfile"
      }
    }
  }

docker_postgres_init.sql 파일:


docker-compose로 postgresql과 pgadmin 올리기:

sudo docker-compose up -d

postgresql과 pgadmin이 올라온 상태 보기:

sudo docker ps

docker-compose로 postgresql과 pgadmin 내리기:

sudo docker-compose down

pgadmin 웹 URL:

http://localhost:15433

sqlalchemy 개발 환경 구성

시행 착오로 얻음

python에서 postgresql을 사용하려면 psycopg2 패키지를 필요로 하며, psycopg2는 libpq-dev과 postgresql-common을 필요로 합니다.

sudo apt install -y libpq-dev postgresql-common

requirements.txt 파일:

wheel
psycopg2==2.9.3
sqlalchemy

패키지 설치:

pip install -r requirements.txt