이 문서를 굳이 작성한 이유는,
순전히 ChatGPT와 대화하면서 어떤 하나의 작업을 온전히 마무리 진행한 경험이 처음이었기 때문이다
다만, 옛날에 몇 번 해봤기 때문에 이미 내용을 아는 상태로 한거였지만, 빠르게 복습하면서 구축하는데 큰 도움이 되었다
구축해서 IntelliJ로 연동하기까지 3시간이 조금 안되는 시간에 다 되었다
(처음했을 때는 하루~이틀 정도의 시간이 걸렸던 걸로 기억한다)
개인적으로 좀 이날 일이 기억에 남았다
키워드나 개념 정도만 알면 굳이 시니어 개발자의 도움이 굳이 필요 없지 않을까 싶은 생각이 들었다...
오죽하면 GPT로 페어프로그래밍을 하는 사례에 대해 소개까지 나왔다!
주의 GPT 내용에 대해 충분히 검증을 거치지 않고 붙여놓은 내용이 있습니다 (특히 이론) (이번 포스트만!!)
Dockerfile vs Docker Compose
- Docker Compose는 서로 다른 서비스를 함께 실행해야 하는 경우에 유용합니다. 예를 들어, 웹 애플리케이션과 데이터베이스를 동시에 실행해야 하는 경우, Docker Compose를 사용하면 이를 쉽게 관리할 수 있습니다.
- 하지만, 당신의 요구 사항이 단순히 Ubuntu 이미지 위에 MySQL을 설치하는 것이라면, Docker Compose는 필요 이상으로 복잡할 수 있습니다.
MySQL Dockerfile 로 생성 후 실행
FROM ubuntu:latest
RUN apt-get update && apt-get install -y mysql-server
EXPOSE 3306
CMD ["/usr/sbin/mysqld"]
CMD는 Dockerfile에 있는 지시자 중 하나로, Docker 컨테이너가 시작될 때 실행되는 기본 명령을 정의.
MySQL 서버를 실행하는 명령어. /usr/sbin/mysqld는 MySQL 서버의 실행 파일 경로.
일반적인 작업 순서
- Dockerfile을 생성합니다.
- 먼저 새 Dockerfile을 만들어야 합니다. 이 파일은 보통 프로젝트의 루트 디렉토리에 위치하며, "Dockerfile"이라는 이름을 사용합니다 (확장자가 없음).
- 예를 들어, FROM ubuntu:latest는 베이스 이미지를 Ubuntu로 설정하라는 지시자입니다.
- Dockerfile로 이미지를 빌드합니다.
Dockerfile이 작성되었다면 docker build 명령을 사용하여 Docker 이미지를 빌드합니다.
`docker build -t {my-docker-image} .`
-t: 이름 부여
. : Dockerfile이 현재 디렉토리에 위치 - 빌드된 이미지를 실행
`docker run -d -p 3306:3306 --name {컨테이너 이름} {my-docker-image}`
이 이미지를 Docker Hub와 같은 레지스트리에 푸시하여 다른 사람들과 공유하거나, 다른 시스템에서 다운로드하여 사용할 수도 있습니다.
도커 컨테이너 이름 변경
- 실행 중인 컨테이너를 중지합니다.
docker stop my_old_container_name
- 컨테이너의 이름을 변경합니다.
docker rename my_old_container_name my_new_container_name
- 컨테이너를 다시 시작합니다.
docker start my_new_container_name
리눅스 현재 OS 확인
cat /etc/os-release
MySQL 셋업
- MySQL 이미지 가져오기: docker pull mysql
- MySQL 컨테이너 실행: MySQL 이미지를 기반으로 Docker 컨테이너를 실행
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
- -name some-mysql: 컨테이너의 이름을 some-mysql로 설정
- e MYSQL_ROOT_PASSWORD=my-secret-pw: 환경 변수를 설정하여 MySQL의 root 사용자 비밀번호를 my-secret-pw로 설정
- d: 컨테이너를 백그라운드에서 실행
- mysql:tag: 사용할 Docker 이미지 버전을 지정
MySQL 컨테이너에 접속
docker exec -it some-mysql bash
MySQL 클라이언트를 실행하여 MySQL 서버에 연결
mysql -u root -p
컨테이너를 중지
docker stop some-mysql
docker rm 명령을 사용하여 컨테이너를 제거할 수 있습니다:
MySQL 이미지의 태그를 지정하지 않으면 Docker는 latest 태그를 사용. latest 태그는 해당 이미지의 최신 안정화 버전을 가리킴
DB 만들기
CREATE DATABASE `numble-performance-ticketing` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
사용자 만들기 & DB 권한 부여
사용자 조회
use mysql;
select user, host from user;
사용자 생성
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
특정 DB에 대한 권한을 특정 user에게 부여
GRANT 권한 ON 데이터베이스.* TO '사용자이름'@'호스트';
GRANT ALL ON mydb.* TO 'john'@'localhost';
FLUSH PRIVILEGES;
사용자 권한 조회
SHOW GRANTS FOR '사용자이름'@'호스트';
아래처럼 호스트 생략가능
SHOW GRANTS FOR '사용자이름';
외부 접속 권한 설정 변경
사용자 권한 설정
GRANT ALL PRIVILEGES ON database.* TO 'user'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
MySQL 서버 접근 권한 설정
/etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
bind-address = 0.0.0.0
service mysql restart;
Docker bash 접속이 안될때
winpty docker exec -it {컨테이너 이름} bash
'Infra, DevOps > Kubernetes, Docker' 카테고리의 다른 글
[k8s] 쿠버로 무중단 배포 3종 모두 해보자 (argo없는 Blue Green) (0) | 2024.01.30 |
---|---|
[배포 기록] 도커 역사 및 빠른 재정리 (feat. 삽질 ..) (0) | 2024.01.20 |
따끈따끈 쿠버네티스 기초 개념 요약 (0) | 2024.01.17 |
윈도우에서 쿠버네티스 긴급 사용 후기 (2) | 2024.01.16 |
Docker _ 생코 (0) | 2021.04.05 |
hi hello... World >< 가장 아름다운 하나의 해답이 존재한다
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!