root@lb:/lib/systemd/system# systemctl restart docker

Warning: The unit file, source configuration file or drop-ins of docker.service changed on disk. Run 'systemctl daemon-reload' to reload units.
root@lb:/lib/systemd/system# systemctl daemon-reload
root@lb:/lib/systemd/system# systemctl restart docker
root@lb:/lib/systemd/system# cat docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target nss-lookup.target docker.socket firewalld.service containerd.service time-set.target
Wants=network-online.target containerd.service
Requires=docker.socket
StartLimitBurst=3
StartLimitIntervalSec=60

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H 0.0.0.0:2375
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutStartSec=0
RestartSec=2
Restart=always

 

ExecStart 부분에 -H 0.0.0.0:2375 추가한다.

 

sudo systemctl daemon-reload
sudo systemctl restart docker.service

 

'DevOps' 카테고리의 다른 글

APM, JAVA Agent  (0) 2024.03.06
GitOps 참고글  (0) 2024.02.23
docker를 돌려보자  (0) 2023.11.22

Alembic은 데이터베이스 변경 이력을 코드로 관리할 수 있게 해주는 툴입니다.

  • DB 스키마(테이블 구조)가 바뀔 때마다,
    직접 SQL 쓰지 않고,
    Python 코드로 변경 내용을 버전 관리합니다.
    마치 Git이 코드 이력을 관리하듯, Alembic은 DB 구조 변경 이력을 관리합니다.
User 테이블에 is_active 컬럼을 추가했을 때:

Alembic으로 이렇게 처리:
alembic revision --autogenerate -m "Add is_active to User"
alembic upgrade head

자동으로 변경사항을 감지해서 마이그레이션 파일 생성
upgrade() / downgrade()로 쉽게 적용/되돌리기 가능

alembic upgrade <revision_id>
alembic upgrade 1234abcd5678
alembic downgrade -1
alembic downgrade <revision_id>

1. 설치

pip install alembic

 

2. 초기화 및 설정 파일

# alembic init {directory_name}
alembic init migration

# ./alembic.ini 파일
sqlalchemy.url = {driver}://{root}:{pwd}@{host}:{port}/{database}

# for 'autogenerate' support (migration/env.py 파일)
# 기본값은 None
# SQLAlchemy + Pydantic 하이브리드 조합인 경우 SQLModel.metadata로 수정
target_metadata = SQLModel.metadata

 

3. 모델 선언 (./models.py)

SQLAlchemy + Pydantic 하이브리드 조합

SQLAlchemy의 ORM 기능 + Pydantic의 타입 검증 기능을 한 클래스로 통합

import uuid

from pydantic import EmailStr
from sqlalchemy.ext.declarative import declarative_base
from sqlmodel import Field, Relationship, SQLModel

# Shared properties
class UserBase(SQLModel):
    email: EmailStr = Field(unique=True, index=True, max_length=255)
    is_active: bool = True
    is_superuser: bool = False
    full_name: str | None = Field(default=None, max_length=255)

# Database model, database table inferred from class name
class User(UserBase, table=True):
    # sqlmodel을 쓰고 있고, table=True가 붙어 있어 SQLAlchemy ORM 테이블로 인식
    # sqlmodel은 SQLAlchemy + Pydantic의 하이브리드 프레임워크입니다.
    id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
    hashed_password: str
    items: list["Item"] = Relationship(back_populates="owner", cascade_delete=True)

 

4. 모델 타겟 import (migration/env.py 파일 수정)

model을 import해야 대상 테이블을 생성할 수 있다.

import models  # 모델 import
또는 
from models import User, Item  # 특정 타겟 import

 

5. alembic commit

# 자동 생성
alembic revision --autogenerate -m "first commit"

# 수동 생성
alembic revision -m "first commit"

 

6. DB 적용

alembic upgrade head

 

'Dev > Python' 카테고리의 다른 글

SQLAlchemy 관계 종류  (0) 2025.04.17
SQLAlchemy DB 처리 방식  (0) 2025.04.17
Flask 프레임워크 thread  (0) 2024.04.12
파이썬 flask - redis - celery 구조  (0) 2024.03.14

출처: https://cafe.naver.com/kubeops/36

Object

Kubernetes Another-Class Object

 

Label / Selector / Naming (1)

Kubernetes Another-Class Labels, Selector, Naming

Label / Selector / Naming (2)

Kubernetes Another-Class Labels, Selector, Naming
 

 

 

+ Recent posts