도커 네트워크 생성 및 컨테이너 생성
docker network ls
docker network create fleetman-network
docker container run -d --network fleetman-network --name database -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=fleetman mysql:5
docker container run -d --network fleetman-network --name fleetman-webapp -p 80:8080 virtualpairprogrammers/fleetman-webapp
위에 방법을 docker compose로 하면 간단하게 할 수 있습니다.
// 실행안되면 직접 설치해야 함
docker-compose -v
docker compose 메뉴얼
https://docs.docker.com/compose/install/linux/#install-the-plugin-manually
docker compose 작성
version: "3"
services:
fleetman-webapp:
image: virtualpairprogrammers/fleetman-webapp
networks:
- fleetman-network
ports:
- 80:8080
depends_on:
- database
database:
image: mysql:5
networks:
- fleetman-network
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=fleetman
networks:
fleetman-network:
위에 컨테이너 실행 명령어를 도커 컴포즈로 바꾼 모습입니다.
여기서 문제가 spring boot는 시작할때 database를 찾는데 database가 실행되지 않고 있으면
웹 어플리케이션은 작동되지않습니다.
deponds-on을 사용하면 데이터베이스 서비스보다 먼저 시작되도록 할 수 있습니다.
다른 방법은 healthcheck 사용하는 방법입니다.
version: '3'
services:
web:
build: .
depends_on:
db:
condition: service_healthy
db:
image: postgres
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s
retries: 5
강의에서는 version2에서만 healthcheck가 된다고 했는데 시간이 지나면서
version3에서도 지원을 하는 것 같습니다.
데이터베이스가 정상적으로 실행 중인지 확인하고,
웹 어플리케이션 컨테이너가 시작되기 전에 기다릴 수 있습니다.
도커 파일이 있는 경로에서
docker-compose up -d
기본이 docker-compose.yml으로 되어 있는데 만약에 이름을 바꾸고 싶으면 이 커맨드를 실행하면 됨
docker-compose -f your-docker-compose-file.yml up -d
docker-compose stop [서비스 이름]
docker-compose down
stop은 일시 중지 버튼과 비슷하게 동작하며, down은 중지 및 초기화 버튼처럼 동작합니다.
환경을 나중에 계속 사용하려면 stop을 선택하고,
전체 환경을 정리하고 새로 시작하려면 down을 선택하시면 됩니다.
출처 강의
'가상화 기술과 관리 > Docker' 카테고리의 다른 글
도커 오케스트레이션 시스템 (0) | 2024.03.23 |
---|---|
Docker 노트정리3 (도커 볼륨) (1) | 2024.02.17 |
Docker - Java 개발자를 위한 완벽 실습 과정 노트정리2 (도커 네트워크) (1) | 2024.01.13 |
Docker노트정리 commit, build(jar, war) (0) | 2023.12.25 |
[Docker] image commit, build 방식 차이 (1) | 2023.12.23 |