클라우드/Docker
[Docker-Compose] 여러 Docker 컨테이너를 한꺼번에 관리하기
D269
2023. 6. 29. 13:39
728x90
docker-compose 설정
이제 docker-compose로 만들어진 컨테이너들을 하나로 묶어서 실행해보자.
PostgreSQL은 이미 만들어진 이미지를 그대로 사용할 것이기 때문에 별도의 dockerfile은 필요없다.
프로젝트 폴더에 docker-compose.yml 파일을 생성한다.
version: "3" # docker-compose 버전
services: # 서비스 목록
frontend: # 서비스 이름
build: # 이미지 Build 옵션
context: ./frontend # Build될 프로젝트가 위치한 경로
dockerfile: dockerfile # 프로젝트 폴더의 dockerfile 이름
container_name: frontend # 컨테이너 이름
ports: # host와 공유할 포트 목록
- 3000:3000 # host:container
depends_on: # 아래의 서비스들이 모두 시작된 이후에 이 서비스를 시작
- backend # backend 서비스가 시작될 때 까지 기다림
backend:
build:
context: ./backend
dockerfile: dockerfile
container_name: backend
ports:
- 80:8080
environment: # 환경변수 설정
- SPRING_DATASOURCE_URL=jdbc:postgresql://database:5432/postgres
- SPRING_DATASOURCE_USERNAME=postgres
- SPRING_DATASOURCE_PASSWORD=postgres
depends_on:
- database # database 서비스가 시작될 때 까지 기다림
database:
image: postgres:latest # postgres 이미지 사용
environment: # 환경변수 설정
- POSTGRES_USERNAME=postgres
- POSTGRES_PASSWORD=postgres
volumes: # host와 container가 공유할 디렉터리 지정
- ./postgres:/var/lib/postgresql/data:rw # host의 postgres 폴더를 컨테이너의 /var/lib/postgresql/data와 공유하고, 읽기/쓰기가 가능하도록 설정
이제 아래의 명령어를 실행하면 docker-compose.yml 파일의 내용을 읽어들여 설정한 대로 컨테이너들을 실행시켜준다.
docker-compose up
실행하면 자동으로 이미지가 빌드되고 컨테이너가 실행된다.
아래와 같이 DB 때문에 실행되지 않았던 backend도 정상적으로 실행되는 것을 볼 수 있다.
backend | 2022-10-04 02:54:44.502 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
backend | 2022-10-04 02:54:44.543 INFO 1 --- [ main] com.example.backend.BackendApplication : Started BackendApplication in 10.311 seconds (JVM running for 12.19)
frontend | Compiled successfully!
frontend |
frontend | You can now view frontend in the browser.
frontend |
frontend | Local: http://localhost:3000
frontend | On Your Network: http://172.18.0.4:3000
frontend |
frontend | Note that the development build is not optimized.
frontend | To create a production build, use npm run build.
frontend |
frontend | webpack compiled successfully
frontend | Compiling...
frontend | Compiled successfully!
frontend | webpack compiled successfully
backend | 2022-10-04 04:06:25.344 INFO 1 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
backend | 2022-10-04 04:06:25.355 INFO 1 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
backend | 2022-10-04 04:06:25.359 INFO 1 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 3 ms
컨테이너 동작 확인
Docker Desktop에서 컨테이너가 잘 뜨는지 확인해보자.
localhost에 접속하여 Backend 서버가 잘 실행됐는지 확인해보자.
http://localhost:3000에 접속하여 Frontend 서버가 잘 실행됐는지 확인해보자.
728x90
반응형