Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 주니어개발자
- 성수핫플
- 디자인패턴
- 클린코드
- 독서
- IntelliJ
- 헤드퍼스트
- 성수볼거리
- 객체지향프로그래밍
- 상속
- 직장인점심
- Java
- 헤드퍼스트디자인패턴
- 오브젝트
- 성수직장인
- 개발자
- 객체지향
- 독서일지
- 직장인
- 깨끗한코드
- 성수
- docker
- 책너두
- 코딩
- JAVA개발자
- 책읽기
- JavaScript
- 성수맛집
- DesignPattern
- Linux
Archives
- Today
- Total
런타임노트
[Docker-Compose] 여러 Docker 컨테이너를 한꺼번에 관리하기 본문
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
반응형
'클라우드 > Docker' 카테고리의 다른 글
| docker 컨테이너 이름 변경하기 (0) | 2023.06.29 |
|---|---|
| docker0 : 컨테이너는 어떻게 통신하나요? (0) | 2023.06.29 |
| Dockerfile 이용하여 이미지 빌드하기 (0) | 2023.06.29 |
| [Docker] docker에 대해 간단히 정리해보았다. (4) | 2023.05.23 |
| [Docker] none image (0) | 2023.05.23 |