앞의 과정의 반복이지만 이제는 local 용이 아닌 AWS에서 serving 할 Image를 만들고 AWS에 upload 해서 실행 시켜 보았다
이번에는 local에서 실행 할 것은 아니라 home 폴더에서 작업을 하였다
앞 부분은 이전회의 반복이다
1. github 에서 clone및 복구
1) ldw@ldw-max:~/laravel$ git clone https://lamb0693:*****************@github.com/lamb0693/bukdu10.git
2) 앞에서 만들어 놓은 Dockerfile을 복사해옴
ldw@ldw-bmax:~/laravel$ cd bukdu10
ldw@ldw-bmax:~/laravel/bukdu10$ cp /var/www/html/bukdu10/Dockerfile ./
3) 미리 복사해 놓은 .env 파일 복사
ldw@ldw-bmax:~/laravel/bukdu10$ cp /home/ldw/다운로드/a.env ./.env
4) VSCode로 .env 파일 수정
AWS EC2 에 있는 DB에 접속할 수 있게 환경 수정
서버 이름 수정등
5) ldw@ldw-bmax:~/laravel/bukdu10$ composer install
6) ldw@ldw-bmax:~/laravel/bukdu10$ npm install
7) ldw@ldw-bmax:~/laravel/bukdu10$ npm run build
2. Image를 /home/ldw/laravel/bukdu10 폴더에서 빌드하고 docker hub 로 upload 함
1) ldw@ldw-bmax:~/laravel/bukdu10$ docker build -t ldw365/ldwdockerimage365:bukdu10 .
9. ldw@ldw-bmax:~/laravel/bukdu10$ docker push ldw365/ldwdockerimage365:bukdu10
The push refers to repository [docker.io/ldw365/ldwdockerimage365]
3. AWS에서 작업
이제 terminal 에서 AWS 로 접속 image를 다운 로드 받고 실행 해 보았다
1) AWS EC2 의 mysql server에 shema 생성하고 이전 server에서 backup 받아 놓은 schema 를 복원함
2) AWS에는 미리 docker를 설치해 놓았다
3) AWS에는 기존 Nginx로 reverse proxy를 설정해 주었다
https://king.w****.com -> http://localhost:8020
ubuntu@ip-172-31-7-173:/etc/nginx/sites-available$ cat wxxxx.com
server {
server_name wxxxx.com ;
l..............................
}
server {
server_name king.w****.com;
location / {
proxy_pass http://127.0.0.1:8020;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme; # Set the X-Forwarded-Proto header
proxy_redirect off;
}
listen [::]:443 ssl; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/king.w****.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/king.w****.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = w****.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
listen [::]:80;
server_name w****.com;
return 404; # managed by Certbot
}
4) docker hub에서 Image pull
ubuntu@ip-172-31-7-173:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ubuntu@ip-172-31-7-173:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu@ip-172-31-7-173:~$ docker pull ldw365/ldwdockerimage365:bukdu10
bukdu10: Pulling from ldw365/ldwdockerimage365
.......................................
Status: Downloaded newer image for ldw365/ldwdockerimage365:bukdu10
docker.io/ldw365/ldwdockerimage365:bukdu10
ubuntu@ip-172-31-7-173:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ldw365/ldwdockerimage365 bukdu10 e9ec64a014a4 7 minutes ago 822MB
5) 8020번 포트로 실행 시켜 주었다
ubuntu@ip-172-31-7-173:~$ docker run -p 8020:80 ldw365/ldwdockerimage365:bukdu10 &
[1] 53885
ubuntu@ip-172-31-7-173:~$ Starting services...
Ready.
==> /var/log/nginx/access.log <==
==> /var/log/nginx/error.log <==
4. 결과 확인 - 오류 발생
1) 접속하니 접속은 되지만 링크들이 css, route, js 등이 http로 설정이 되어있어 https 접속에서 문제를 일으킨다
문제는 다음에 해결해 보겠다
2) https://king.w*****.com으로 접속 - 접속은 된다
3) 링크 클릭 웹페이지 이동하면 https 와 http Mixed Content를 문제로 잘 작동되지 않는다
다음 회에서 해결 예정이다