인프라/docker
Postgresql Docker 컨테이너에서 부팅 시 SSH 서비스 자동 실행 방법
nix-be
2024. 4. 24. 10:44
728x90
Dockerfile을 사용하여 SSH 서버를 포함하는 이미지를 만들고, 컨테이너 시작 시 SSH 서비스가 실행되도록 구성해야 합니다.
docker window 설치 후 진행
1단계: Dockerfile 생성 및 설정
- Dockerfile 작성: 아래는 SSH 서비스를 포함하는 기본 Dockerfile 예시입니다. 이 Dockerfile은 Ubuntu를 기반으로 하지만, 필요에 따라 다른 베이스 이미지를 사용할 수 있습니다.
FROM postgres:latest
RUN apt-get update && apt-get install -y vim && apt-get install -y net-tools
RUN apt-get install -y openssh-server
# SSH를 위한 디렉토리 생성
RUN mkdir /var/run/sshd
# root 사용자를 위한 비밀번호 설정 (여기서는 'your_password'를 사용자의 비밀번호로 변경)
RUN echo 'root:qwe123!@#' | chpasswd
# root 로그인 허용 (실제 운영 환경에서는 보안을 위해 비권장)
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# SSH 서버가 데몬 모드로 실행되지 않도록 설정 (Docker에서 권장)
RUN sed -i 's/.*UsePAM.*/UsePAM no/' /etc/ssh/sshd_config
# SSH 및 PostgreSQL 서비스 실행
CMD /usr/sbin/sshd && docker-entrypoint.sh postgres
2단계 docker-compose.yml 파일
version: "3.9"
services:
db:
build:
context: .
dockerfile: Dockerfile
platform: linux/x86_64 #(필요한 경우에만 포함)
restart: always
ports:
- "5432:5432"
- "2222:22"
environment:
POSTGRES_PASSWORD: qwe123!@#
POSTGRES_DB: testdb
POSTGRES_USER: user
TZ: Asia/Seoul
volumes:
- ../db/postgres/data:/var/lib/postgresql/data
3단계 docker-compose 명령어로 실행
//명령어 실행 경로 : C:\dockerfile
docker-compose -f .\docker-compose.yml up -d
4단계 확인
//ssh 접근
127.0.0.1:2222
// postgres 접근
root@68f2b794b3d9:~# psql -U user testdb
psql (16.2 (Debian 16.2-1.pgdg120+2))
Type "help" for help.
testdb=# \\du
List of roles
Role name | Attributes
-----------+------------------------------------------------------------
user | Superuser, Create role, Create DB, Replication, Bypass RLS
testdb=# \\list
testdb=# exit
root@68f2b794b3d9:~# postgres -v
-bash: postgres: command not found
728x90