요즘 운영체제와 도커에 대해 공부중인 나.
이번 프로젝트에서는 도커 파일을 작성해보기로 한다.^_^
docker run -d \
--name mysql_yomankum \
-e MYSQL_ROOT_PASSWORD=비번 \
-e MYSQL_DATABASE=yomankum \
-v yomankum:/var/lib/mysql \
--net yomankum \
--net-alias yomankum \
-p 3307:3306/tcp \
mysql
참고로 내가 도커파일로 작성하고 싶은 명령어는 요것임 ㅇ_ㅇ...!
Dockerfile
FROM ubuntu:latest
LABEL authors="holiday <holiday.k1@icloud.com>"
# For ubuntu
RUN apt-get update && apt-get install apache2 -y
# For MySQL
RUN apt-get install -y mysql-server
EXPOSE 3306
ENV MYSQL_ROOT_PASSWORD 비번
ENV MYSQL_DATABASE yomankum
VOLUME ["/var/lib/mysql"]
ENTRYPOINT ["top", "-b"]
하나씩 설명을 하면
.
.
.
FROM ubuntu:latest
기본 베이스 이미지 !!
나는 우분투 서버를 이용할 거라서 우분투를 이용했고
일단은 마지막에 올린 버전으로...
LABEL authors="holiday <holiday.k1@icloud.com>"
이건 이미지를 만든 사람 알려주는 거,,
원래는 M 으로 시작하는 뭔가를 쓰는데 현재는 사용 안 하는 걸로 되어서
이젠 태그용도인 라벨에다가 넣는다고 한당.
# For ubuntu
RUN apt-get update && apt-get install apache2 -y
이것은 아파치 웹서버를 다운받는 것이당
톰캣 풀네임이 아파치 톰캣인 거 아시죠? 웹서버 만드는 고런 녀석임
일단 나중에 웹 서버 돌릴 거니까 미리 인스톨해두는건데 솔직히 주석해도 그만이긴 함
# For MySQL
RUN apt-get install -y mysql-server
EXPOSE 3306
ENV MYSQL_ROOT_PASSWORD 비번
ENV MYSQL_DATABASE yomankum
VOLUME ["/var/lib/mysql"]
ENTRYPOINT ["top", "-b"]
그리고 mysql 서버 이미지를 다운받고
mySQL 포트는 3306 이니까 적어주고
환경변수도 설정한당
도커 볼륨에 연동(?)할 mySQL 데이터가 있는 레포 경로도 적어주고
웹서버를 올릴 때의 명령어도 적어준당...
Dockerfile 이 실제 도커 명령어(?)를 써주는 느낌이면
compose.yml 은 내가 썼던 명령어의 세부 설정을 정해주는 느낌이다.
version: '1'
services:
db:
container_name: mysql_yomankum
image: 'mysql:latest'
restart: 'unless-stopped'
volumes:
- mysql_yomankum:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=비번
- MYSQL_USER=yomankum
- MYSQL_PASSWORD=비번
- MYSQL_DATABASE=yomankum
ports:
- 3307:3306
networks:
network:
aliases:
- yomankum
networks:
network:
driver: bridge
volumes:
mysql_yomankum:
external: true
요런 내용인데 하나하나 뜯어보면..
version: '1'
내 애플리케이션의 버전을 적어주는 거다.
나는 모 일단 아무것도 완성된 것도 없고...첫번째 버전이라고 1이라고 일단 적었음 ㅋㅋㅋ
services:
db:
container_name: mysql_yomankum
image: 'mysql:latest'
restart: 'unless-stopped'
이미지 종류에 따라 services: 밑에 나눠서 적어주는데
난 일단 mysql 디비 사용만 필요해서 이렇게 적었담..
근데
사실 난 미리 디비 컨테이너, 네트워크, 볼륨을 "요만큼" 용으로 미리 만들어두었음..
적용하고 싶은 세부 설정들이 있었기 때문임,,
근데 컨테이너 이름을 안 적으면 임의로 yomankum-db-1 이런 식으로 만들어지는데
저렇게 컨테이너 이름을 적어주면 기존 컨테이너를 사용할 수 있음...
그러면 나머지는 정보는 어케보면 그냥 내 컨테이너 정보를 적어주는 것임.ㅎㅎ
-> 그런 게 아니라 그냥 기존 컨테이너에 마운트되어지는듯 ...^^ ㅋㅋ...
이미지는 mysql:lastest 를 사용했고
도커 데몬을 재시작해도 백그라운드에서 계속 돌아가도록, DB서버가 꺼지지 않도록 설정!
volumes:
- mysql_yomankum:/var/lib/mysql
volumes:
mysql_yomankum:
external: true
요것은 볼륨 관련 설정인데
나는 미리 도커볼륨을 mysql_yomankum 이라는 이름으로 만들어두어서
호스트볼륨(내가만든 볼륨):mysql data가 들어가는 디렉토리 를 연동했다는 걸 명시하고
내가 만든 볼륨을 명시해준다. ㅇ_ㅇ
environment:
- MYSQL_ROOT_PASSWORD=비번
- MYSQL_PASSWORD=비번
- MYSQL_DATABASE=yomankum
이거는 그냥 환경 변수 설정.
내가 처음에 mysql_yomankum 컨테이너를 만들면서 쓰는 데이터베이스와 비번 등을 적어준당.
아마 기존 컨테이너를 만들지 않았다면 이 정보대로 mysql 컨테이너가 만들어질 것이다.
ports:
- 3307:3306
networks:
network:
aliases:
- yomankum
networks:
network:
driver: bridge
그리고 네트워크 관련인데
나는 내 맥의 3307 포트와 mysql의 3306 포트를 연결했기 때문에 저렇게 명시한다.
networks: 아래에는 네트워크 이름을 명시해주는데
이게 저렇게 해놓으면 이름 만드는 패턴이
yomankum_network <- 이렇게 만들어짐 (참고하삼)
그리고 나는 yomankum_network 를 브릿지 네트워크로 만들었었기 때문에 저렇게 명시해주었다.
이런 사용자 정의 네트워크는 나중에 disconnect, connect 를 통해 연결하거나 끊을 수 있다.
이렇게 작성한 뒤, 서버를 빌드하면...
저렇게 컨테이너를 시작할 수 있고..
터미널에서 docker ps -a 해보면
요렇게 무사히 컨테이너가 만들어진 것을 볼 수 있답니다!
포트 연결도 제대로 되었지요?
야호!~~~
'프로젝트 > 개인 프로젝트) 요만큼' 카테고리의 다른 글
백엔드 개발자가 런했다.. (0) | 2023.11.06 |
---|---|
프로젝트 인원이 구해졌다. 드디어 백엔드랑 일해본다! (0) | 2023.11.05 |
혼자는 외로워. 렛플에서 팀원을 구하자! (1) | 2023.11.04 |
Docker ) MySQL 컨테이너를 사용하는 서비스를 테스트하자 ! (1) | 2023.11.02 |
불편리한 가계부를 만들어보자! (1) | 2023.10.27 |