반응형

아무 생각없이 로컬 호스트로 계속 삽질 ㅎㅎ

 

 

# MySQL 연결 정보
db_config = {
    "host": "host.docker.internal", #도커 내부에서 호스트를 찾기 위해 사용
    "port": 3306,         # MySQL이 실행 중인 포트 (기본: 3306, 변경된 경우 확인)
    "user": "root",       # MySQL 사용자명
    "password": "1234",  # MySQL 비밀번호
    "database": "userdb" # 사용할 데이터베이스
}

 "host": "host.docker.internal", #도커 내부에서 호스트를 찾기 위해 사용

 

재밌네~

 

포트..방화벽 등 삽질 기록...

 

반응형
반응형

우와 

 

뭐가 꼬였는지 

 

직접 실행하면 잘 동작하는데

크론탭으로 실행 하면 오류가 .. 오류 로그도 안떨어지고 .. 이식히

 

결론은 

도커 파이썬에서 사용하는 path 랑

크론탭 path 가 서로 달랐다..

 

=========== 디버깅 기록 =======================

 

우선 크론탭에서 로그를 남겨 보았다.

 

crontab -e

 

* * * * *  python3 /var/autobot/테스트.py >> /var/autobot/테스트.log 2>&1

 

테스트.log

를 확인해보니

 

리눅스에서 잘 실행된 소스 인데 없는 모듈이라고 나왔다..

 

크론탭으로만 실행하면 ModuleNotFoundError: No module named 'requests' 

 

개 빡침

 

pip list 로 확인해보니 당연히 모듈있음 .. 여기서 path  문제로 의심

 

파이썬에서 사용하는 path 확인

 

import sys
print(sys.executable)
print(sys.path)

해당 파일 크론탭에서도 실행해봄

 

* * * * * python3 /path/to/test_sys_path.py >> /path/to/cron_debug.log 2>&1

 

로그 확인하니 서로 경로가 다름

## 파이썬 지금 사용하는 path
## ['/var/autobot', '/usr/local/lib/python311.zip', '/usr/local/lib/python3.11', '/usr/local/lib/python3.11/lib-dynload', '/usr/local/lib/python3.11/site-packages']

## crontab dㅔ서 사용하던 경로
## ['/var/autobot', '/usr/lib/python311.zip', '/usr/lib/python3.11', '/usr/lib/python3.11/lib-dynload', '/usr/local/lib/python3.11/dist-packages', '/usr/lib/python3/dist-packages']

 

음 어 왜 꼬였을까... 

 

그래서 그냥 크론탭 상단에 강제로 path 지정

crontab python 강제 PATH

 

잘 동작.. End..

 

 

왜 환경이 꼬였는지가 더 궁금하네.. 도대체 왜... 왜 도커써서 그런거야? 도대체 한방에 좀 쉽게 가자 엉엉

반응형
반응형
from datetime import datetime

# 로그 파일 경로
log_file = "/var/log/cron_test.log"

# 현재 시간 기록
with open(log_file, "a") as f:
    f.write(f"크론탭 실행됨: {datetime.now()}\n")

/var/user/cron_test.py  

 

crontab -e

로 해당 파일  1분 마다 실행 추가

* * * * * python /var/user/cron_test.py

 

저장

tail -f /var/log/cron_test.log

 

 

출력 되는 시간이 현재 시간이 아니면.. 수정

 

crontab -e  

제일 상단에 

 

TZ=Asia/Seoul

 

추가 하면 정상 시간으로 출력 된다

 

깨알 팁 

반응형
반응형

cursor 에서 깃 연결 하는데 간만에 하는거라 헤맴

 

git init
git add .
git commit -m "Initial commit"
git branch -M main
git remote add origin your-github-repo-url
git push -u origin main

git remote add origin 이부분은 

연결해야할 브런치명 이랑 내가 방금 생성한 깃 url 연결하면 됨

 

git remote add origin https://github.com/behong/250312.git

 

git push  도  같음

 

git push -u 로컬브런치명  깃허브 브런치명

git push -u  origin master

반응형
반응형

도커 허브로 관리

 



기본 환경 만든 후 도커 허브에 올리기

예)  
Dockerfile
docker-compose.yml

두개 파일 생성 후

docker-compose up -d

그럼 이미지 생성 된다

도커 허브 로그인  cmd 에서..


docker login 

Docker Compose로 빌드한 이미지를 Docker Hub에 올리려면


 docker-compose build 

명령어를 실행합니다.

도커 허브에 푸시

docker push mydockerhubusername/myapp:latest

허브에 잘 올라간것 확인 할 수 있음  굿굿 ~

 


그리고 그 후 
Dockerfile
docker-compose.yml

 

변경이 발생 하면
변경된 내용을 반영하려면 새로 빌드합니다.
docker-compose build

docker push mydockerhubusername/myapp:latest

좀 헷갈리는데 몇번 해보면 감이 온다 ..

 

컨데이너면 

docker commit <container-name> <new-image-name>


여하튼 쓸데없이 로컬에 백업본 만들어두려고 했는데 이게 훨씬 편함 

반응형
반응형

도커 내부에 라이브러리 설치등으로 처음과 다르게 자꾸 변경된다

 

로컬에 백업해서 가지고 있을까 하다

 

도커 허브에 올려서 관리하려고 한다

 

굿굿 ~

 

 

변경된 내용을 Docker Hub에 올리려면 새로운 이미지로 변경된 내용을 커밋하고 새로 빌드된 이미지를 푸시하는 과정이 필요합니다. 이 과정은 주로 Dockerfile을 수정하거나 컨테이너 내에서 변경한 내용을 반영하여 이미지를 업데이트하는 방법입니다. 단계별로 설명하겠습니다.

1. 변경 사항 반영 (이미지 수정)

먼저, Docker 이미지를 변경하려면 몇 가지 방법이 있습니다:

1.1. Dockerfile 수정

Dockerfile을 수정하여 새로운 내용(예: 라이브러리 설치, 파일 수정 등)을 반영할 수 있습니다. Dockerfile을 수정한 후, 해당 이미지를 다시 빌드하여 새로운 태그를 지정할 수 있습니다.

예를 들어, 기존에 myapp:latest 이미지를 사용하고 있었다면, Dockerfile을 수정하고, 다음과 같이 이미지를 다시 빌드합니다:

bash
 
docker build -t <dockerhub-username>/<image-name>:<new-tag> .

1.2. 컨테이너 내에서 직접 수정 후 이미지로 저장

만약 컨테이너 내에서 직접 변경 사항을 적용하고, 이를 새로운 이미지로 저장하고 싶다면 docker commit 명령어를 사용하여 수정된 컨테이너를 이미지로 저장할 수 있습니다.

  1. 컨테이너에 접속하여 필요한 변경을 합니다.
    bash
     
    docker exec -it <컨테이너 이름 또는 ID> bash
     
  2. 예를 들어:
  3. 변경 작업을 완료한 후, 컨테이너를 커밋하여 이미지를 생성합니다:예를 들어, mycontainer라는 컨테이너를 커밋하여 myusername/myapp:latest로 저장하려면:
  4. bash
     
    docker commit mycontainer myusername/myapp:latest
  5. bash
     
    docker commit <컨테이너 이름 또는 ID> <dockerhub-username>/<image-name>:<new-tag>

2. 변경된 이미지 푸시

변경된 이미지를 Docker Hub에 푸시하려면, 새로운 태그를 사용하여 이미지를 푸시해야 합니다.

2.1. 새로운 태그 지정 (선택 사항)

이미지에 새로운 태그를 지정하려면 docker tag 명령어를 사용하여 이미지를 새 태그로 지정할 수 있습니다.

예를 들어, myusername/myapp:latest 이미지를 myusername/myapp:v2로 태그를 변경하려면:

bash
 
docker tag myusername/myapp:latest myusername/myapp:v2

2.2. 이미지 푸시

이제 변경된 이미지를 Docker Hub에 푸시할 준비가 되었습니다. docker push 명령어를 사용하여 이미지를 Docker Hub로 푸시합니다:

bash
 
docker push <dockerhub-username>/<image-name>:<new-tag>

예를 들어, myusername/myapp:v2 이미지를 푸시하려면:

bash
 
docker push myusername/myapp:v2

3. 변경된 이미지가 Docker Hub에 반영되는지 확인

Docker Hub에 이미지를 푸시한 후, Docker Hub 웹사이트에 접속하여 해당 이미지가 업로드되었는지 확인할 수 있습니다.

  1. Docker Hub에 로그인합니다.
  2. Repositories 탭에서 변경된 이미지를 확인하고, 푸시한 태그가 반영되었는지 확인합니다.

요약

  1. Dockerfile 수정 후 새 이미지 빌드: docker build 명령어로 Dockerfile을 수정한 후 새로운 이미지를 빌드합니다.
  2. 컨테이너에서 변경 후 커밋: docker commit 명령어로 컨테이너에서 변경 사항을 반영한 후 이미지를 저장합니다.
  3. 이미지 태그 변경 (선택 사항): docker tag 명령어로 이미지를 새로운 태그로 지정합니다.
  4. 이미지 푸시: docker push 명령어로 Docker Hub에 이미지를 푸시합니다.
반응형
반응형

폴더 안 파일 전체 권한 주기

 

 

root로 해야 함

 

 

chmod u+rwx /var/원하는 폴더/*

반응형
반응형

home/user 디렉토리에 

.profile 수정 

 

 

 


# 가상 환경 자동 활성화
source /var/가상환경폴더/bin/activate

 

#환경 적용 후 폴더 이동
cd /var/

 

 

괜히 스크립트 만들어서 고생했네.. 

 

프로필에 적용하면 로그인 할때 마다 자동으로 적용됨

반응형
반응형

1. docker-compose.yml 파일 작성

아래 내용을 포함한 docker-compose.yml 파일을 생성하세요.

 

version: '3'

services:
  ubuntu-ssh:
    image: ubuntu:latest
    container_name: ubuntu_ssh
    restart: unless-stopped
    ports:
      - "2222:22"
    volumes:
      - ./init.sh:/root/init.sh
    command: ["bash", "/root/init.sh"]
 

 

2. init.sh 스크립트 작성

컨테이너가 시작될 때 SSH 서버를 설치하고 실행하도록 init.sh 파일을 만들고, 아래 내용을 추가하세요.

 

#!/bin/bash

# 패키지 업데이트 및 SSH 설치
apt update && apt install -y openssh-server

# 루트 계정 비밀번호 설정 (여기서는 'root'로 설정)
echo "root:root" | chpasswd

# SSH 설정 변경 (root 로그인 허용)
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config

# SSH 서비스 실행
service ssh restart

# 컨테이너가 종료되지 않도록 유지
exec bash
 

3. 실행 권한 부여

터미널에서 실행 권한을 설정해 주세요.

chmod +x init.sh

4. 도커 컴포즈 실행

이제 컨테이너를 실행하면 SSH 접속이 가능해집니다.

docker-compose up -d

5. SSH 접속

외부에서 SSH로 접속하려면 다음 명령어를 실행하세요.

ssh root@<호스트 IP> -p 2222

호스트 IP가 192.168.1.100이라면, 다음과 같이 접속하면 됩니다.

ssh root@192.168.1.100 -p 2222

이제 SSH를 통해 우분투 컨테이너에 외부에서 접속할 수 있습니다! 🚀

반응형
반응형

반응형

+ Recent posts