본문 바로가기
강의 실습/비전공자도 이해할 수 있는 Docker 입문 실전

[실습] Docker Compose로 프론트엔드(HTML, CSS, Nginx) 실행시키기

by jint 2026. 5. 31.

1. Docker Compose 로 프론트엔드(HTML, CSS, Nginx) 실행
1) HTML, CSS 파일 생성
- Windows PowerShell

PS C:\Users\admin> mkdir compose-web-server


    디렉터리: C:\Users\admin


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----      2026-05-31  오후 10:59                compose-web-server


PS C:\Users\admin> cd compose-web-server


- compose-web-server/index.html

<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <h1>Compose Web Page</h1>
</body>
</html>


* 주의
Nginx 기본 설정에 의해 메인 페이지(첫 페이지)의 파일명을 index.html 로 지어야 함

- compose-web-server/style.css

* {
    color: blue;
}


2) Dockerfile 작성
Docker Hub - nginx : https://hub.docker.com/_/nginx

 

nginx - Official Image | Docker Hub

⁠Quick reference ⁠Supported tags and respective Dockerfile links 1.31.1, mainline, 1, 1.31, latest, 1.31.1-trixie, mainline-trixie, 1-trixie, 1.31-trixie, trixie⁠ 1.31.1-perl, mainline-perl, 1-perl, 1.31-perl, perl, 1.31.1-trixie-perl, mainline-trixi

hub.docker.com


- compose-web-server/Dockerfile

FROM nginx 
COPY ./ /usr/share/nginx/html


3) compose 파일 작성
compose.yml 작성하지 않고 Docker CLI 로 실행시킬 때)

$ docker build -t compose-web-server .
$ docker run -d -p 80:80 compose-web-server


- compose-web-server/compose.yml

services:
  compose-web-server:
    build: .
    ports:
      - 80:80


4) compose 파일 실행
- Windows PowerShell

PS C:\Users\admin\compose-web-server> docker compose up --build -d
#1 [internal] load local bake definitions
#1 reading from stdin 595B 0.0s done
#1 DONE 0.0s

#2 [internal] load build definition from Dockerfile
#2 transferring dockerfile: 79B done
#2 DONE 0.1s

#3 [internal] load metadata for docker.io/library/nginx:latest
#3 DONE 0.1s

#4 [internal] load .dockerignore
#4 transferring context: 2B done
#4 DONE 0.1s

#5 [internal] load build context
#5 transferring context: 458B done
#5 DONE 0.1s

#6 [1/2] FROM docker.io/library/nginx:latest@sha256:5aca99593157f4ae539a5dec1092a0ad8762f8e2eb1789085a13a0f5622369f6
#6 resolve docker.io/library/nginx:latest@sha256:5aca99593157f4ae539a5dec1092a0ad8762f8e2eb1789085a13a0f5622369f6 0.1s done
#6 DONE 0.4s

#7 [2/2] COPY ./ /usr/share/nginx/html
#7 DONE 0.1s

#8 exporting to image
#8 exporting layers
#8 exporting layers 0.2s done
#8 exporting manifest sha256:03d96a60f9ec86cd872cd0cc6d1c847ed371292f7b23468f7bc14cb57282d20d 0.0s done
#8 exporting config sha256:5c433d50ccffd76ba6062cba9483d0c492e87c816690c26d71406d068faf8ad7 0.0s done
#8 exporting attestation manifest sha256:c48a3be47cfbe0ac2ba6c383d499ea1f82e6acfab9cf2a08d014ba17d6439162
#8 exporting attestation manifest sha256:c48a3be47cfbe0ac2ba6c383d499ea1f82e6acfab9cf2a08d014ba17d6439162 0.1s done
#8 exporting manifest list sha256:c70bd0ddda1fd80a66025f481768013f6bef02edacae3c5b5b5efa352f3db857 0.0s done
#8 naming to docker.io/library/compose-web-server-compose-web-server:latest
#8 naming to docker.io/library/compose-web-server-compose-web-server:latest done
#8 unpacking to docker.io/library/compose-web-server-compose-web-server:latest 0.1s done
#8 DONE 0.5s

#9 resolving provenance for metadata file
#9 DONE 0.0s
[+] up 3/3
 ✔ Image compose-web-server-compose-web-server       Built                                                                                                                                                   1.8s
 ✔ Network compose-web-server_default                Created                                                                                                                                                 0.0s
 ✔ Container compose-web-server-compose-web-server-1 Started                                                                                                                                                 0.5s

What's next:
    Filter, search, and stream logs from all your Compose services
    in one place with Docker Desktop's Logs view. docker-desktop://dashboard/logs?appId=compose-web-server


5) compose 실행 현황 확인, 이미지 생성 확인
- Windows PowerShell

PS C:\Users\admin\compose-web-server> docker compose ps
NAME                                      IMAGE                                   COMMAND                   SERVICE              CREATED          STATUS          PORTS
compose-web-server-compose-web-server-1   compose-web-server-compose-web-server   "/docker-entrypoint.…"   compose-web-server   20 seconds ago   Up 19 seconds   0.0.0.0:80->80/tcp, [::]:80->80/tcp
PS C:\Users\admin\compose-web-server> docker ps
CONTAINER ID   IMAGE                                   COMMAND                  CREATED          STATUS          PORTS                                 NAMES
05aa5951abc0   compose-web-server-compose-web-server   "/docker-entrypoint.…"   27 seconds ago   Up 26 seconds   0.0.0.0:80->80/tcp, [::]:80->80/tcp   compose-web-server-compose-web-server-1
PS C:\Users\admin\compose-web-server> docker image ls
                                                                                                                                                                                             i Info →   U  In Use
IMAGE                                            ID             DISK USAGE   CONTENT SIZE   EXTRA
compose-nest-server-compose-nest-server:latest   c50411fed584        2.1GB          502MB
compose-next-server-compose-next-server:latest   4e26f54e6c8c       1.41GB          398MB
compose-spring-boot-server-my-server:latest      dc64aff88c24        719MB          230MB
compose-web-server-compose-web-server:latest     c70bd0ddda1f        238MB         63.1MB    U
my-jdk17-server:beta                             18e650b59b52        682MB          212MB
my-jdk17-server:latest                           09a2803e5d8e        682MB          212MB    U
my-node-server:latest                            9a1e49574c81       1.77GB          442MB    U
my-server:latest                                 c8dad74bef6b        157MB         41.6MB    U
mysql:latest                                     c11782aa2a96        1.3GB          290MB
nginx:latest                                     5aca99593157        241MB           66MB
redis:latest                                     4d25e2fe601f        204MB         55.3MB


6) 컨테이너 로그 확인
- Windows PowerShell

PS C:\Users\admin\compose-web-server> docker compose logs
compose-web-server-1  | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
compose-web-server-1  | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
compose-web-server-1  | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
compose-web-server-1  | 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
compose-web-server-1  | 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
compose-web-server-1  | /docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh
compose-web-server-1  | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
compose-web-server-1  | /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
compose-web-server-1  | /docker-entrypoint.sh: Configuration complete; ready for start up
compose-web-server-1  | 2026/05/31 14:12:05 [notice] 1#1: using the "epoll" event method
compose-web-server-1  | 2026/05/31 14:12:05 [notice] 1#1: nginx/1.31.1
compose-web-server-1  | 2026/05/31 14:12:05 [notice] 1#1: built by gcc 14.2.0 (Debian 14.2.0-19)
compose-web-server-1  | 2026/05/31 14:12:05 [notice] 1#1: OS: Linux 6.6.114.1-microsoft-standard-WSL2
compose-web-server-1  | 2026/05/31 14:12:05 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
compose-web-server-1  | 2026/05/31 14:12:05 [notice] 1#1: start worker processes
compose-web-server-1  | 2026/05/31 14:12:05 [notice] 1#1: start worker process 29
compose-web-server-1  | 2026/05/31 14:12:05 [notice] 1#1: start worker process 30
compose-web-server-1  | 2026/05/31 14:12:05 [notice] 1#1: start worker process 31
compose-web-server-1  | 2026/05/31 14:12:05 [notice] 1#1: start worker process 32
compose-web-server-1  | 2026/05/31 14:12:05 [notice] 1#1: start worker process 33
compose-web-server-1  | 2026/05/31 14:12:05 [notice] 1#1: start worker process 34
compose-web-server-1  | 2026/05/31 14:12:05 [notice] 1#1: start worker process 35
compose-web-server-1  | 2026/05/31 14:12:05 [notice] 1#1: start worker process 36
compose-web-server-1  | 2026/05/31 14:12:05 [notice] 1#1: start worker process 37
compose-web-server-1  | 2026/05/31 14:12:05 [notice] 1#1: start worker process 38
compose-web-server-1  | 2026/05/31 14:12:05 [notice] 1#1: start worker process 39
compose-web-server-1  | 2026/05/31 14:12:05 [notice] 1#1: start worker process 40
compose-web-server-1  | 2026/05/31 14:12:05 [notice] 1#1: start worker process 41
compose-web-server-1  | 2026/05/31 14:12:05 [notice] 1#1: start worker process 42
compose-web-server-1  | 2026/05/31 14:12:05 [notice] 1#1: start worker process 43
compose-web-server-1  | 2026/05/31 14:12:05 [notice] 1#1: start worker process 44
compose-web-server-1  | 2026/05/31 14:12:05 [notice] 1#1: start worker process 45
compose-web-server-1  | 2026/05/31 14:12:05 [notice] 1#1: start worker process 46
compose-web-server-1  | 2026/05/31 14:12:05 [notice] 1#1: start worker process 47
compose-web-server-1  | 2026/05/31 14:12:05 [notice] 1#1: start worker process 48

What's next:
    Filter, search, and stream logs from all your Compose services
    in one place with Docker Desktop's Logs view. docker-desktop://dashboard/logs?appId=compose-web-server


7) 브라우저에서 확인
브라우저에서 http://localhost:80/ 접속

 

Docker Compose 로 웹 서버 실행 확인


8) 실행시킨 컨테이너 중지 후 삭제
- Windows PowerShell

PS C:\Users\admin\compose-web-server> docker compose down
[+] down 2/2
 ✔ Container compose-web-server-compose-web-server-1 Removed                                                                                                                                                 0.4s
 ✔ Network compose-web-server_default                Removed                                                                                                                                                 0.3s
PS C:\Users\admin\compose-web-server> docker compose ps
NAME      IMAGE     COMMAND   SERVICE   CREATED   STATUS    PORTS
PS C:\Users\admin\compose-web-server> docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES



참고링크 : https://www.inflearn.com/course/%EB%B9%84%EC%A0%84%EA%B3%B5%EC%9E%90-docker-%EC%9E%85%EB%AC%B8-%EC%8B%A4%EC%A0%84?cid=334085

 

비전공자도 이해할 수 있는 Docker 입문/실전| JSCODE 박재성 - 인프런 강의

현재 평점 4.9점 수강생 14,486명인 강의를 만나보세요. 비전공자 입장에서도 쉽게 이해할 수 있고, 실전에서 바로 적용 가능한 Docker 입문/실전 강의를 만들어봤습니다! Docker 기본 개념, Spring Boot를

www.inflearn.com

댓글