compose를 사용하기 위해 dockerfile을 먼저 적어보자.
version: '3.7'
services:
nginx:
container_name: nginx
image: "nginx"
ports:
- 80:80
이후에 docker compose로 실행시켜
docker-compose up -d
컨테이너를 확인하면

정상적으로 nginx server가 실행되었다. 하지만 nginx만 실행시킨것이지 아직 다른 was를 붙이진 않았고 설정도 default 그대로이기 때문에 nginx가 뜬것만 확인 가능하다.
그래도 aws의 포트를 열어주고 확인해보자!

nginx가 정상적으로 실행된것을 확인할 수 있다!
이제 우리 사이트의 대문 역할을 해줄 node server를 만들 차례다. 그럼 위의 nginx와 해당 node server는 세트로 묶여서 실행되면 더 좋을거 같다.
version: '3.7'
services:
nginx:
container_name: nginx
image: "nginx"
ports:
- 80:80
express:
image: "node"
container_name: express
expose:
- 3000
volumes:
- /volumes:/volumes
stdin_open: true
tty: true
위 파일을 그대로 가져와서 다시 수정해서 사용하자!

docker compose로 실행하면 nginx와 node 서버가 정상적으로 실행된것을 확인할 수 있다.
node server를 생성해서 프로젝트를 올려둬야한다.
framework express
language nodejs
를 사용하여 간단하게 메인 사이트를 만들어서 대문 역할을 시키려고 한다.
express를 사용하여 git에 소스를 올리고 웹 사이트가 올라갈 server에 소스를 받아서 실행시켜준다.
git에서 소스를 받은 뒤 install하고 start해준다. 이건 굳이 설명 안해도 될거 같아서 넘어간다.
우리가 설정한 내용에 express:3000으로 가상 컨테이너 상에서 포트를 열어놨으므로

/etc/nginx/nginx.conf 파일을 열어서 수정해준다.

정상적으로 express가 실행되었다.
이제 실제로 nginx와 node server를 연결하여 화면을 띄울 수 있다. 여기서 그럼 또 문제가 무엇이냐... 이걸 docker-compose를 사용하여 자동으로 연결되어 docker-compose로 실행할 때마다 자동으로 nginx는 설정이 되어 있으며 node server는 자동으로 git pull을 실행한 뒤 server를 띄우는 작업이 진행되어야한다. 그러면 docker-compose up -d 라는 명령어 하나로 서버를 계속해서 자동으로 update해놓은 상태가 될수 있는 것이다.