1.인스턴스 생성

#!/bin/bash -xe
apt update -y
apt install nodejs unzip wget npm mysql-server awscli tree nmap -y
cd /home/ubuntu
git clone <https://github.com/ddps-lab/architect-cloud.git>
cd /home/ubuntu/architect-cloud/2024
chown ubuntu -R monolithic_code/
cd monolithic_code
npm install
mysql -u root -e "CREATE USER 'nodeapp' IDENTIFIED WITH mysql_native_password BY 'coffee'";
mysql -u root -e "GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'nodeapp'@'%' WITH GRANT OPTION;"
mysql -u root -e "CREATE DATABASE COFFEE;"
mysql -u root -e "USE COFFEE; CREATE TABLE suppliers(id INT NOT NULL AUTO_INCREMENT,name VARCHAR(255) NOT NULL,address VARCHAR(255) NOT NULL,city VARCHAR(255) NOT NULL,state VARCHAR(255) NOT NULL,email VARCHAR(255) NOT NULL,phone VARCHAR(100) NOT NULL,PRIMARY KEY ( id ));"

sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/mysql.conf.d/mysqld.cnf
systemctl enable mysql
service mysql restart
TOKEN=`curl -X PUT "<http://169.254.169.254/latest/api/token>" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
export APP_DB_HOST=$(curl <http://169.254.169.254/latest/meta-data/local-ipv4> -H "X-aws-ec2-metadata-token: $TOKEN")
export APP_DB_USER=nodeapp
export APP_DB_PASSWORD=coffee
export APP_DB_NAME=COFFEE
export APP_PORT=80

node index.js &


#!/bin/bash -xe

apt update -y
apt install nodejs unzip wget npm mysql-client tree nmap -y
cd /home/ubuntu
git clone <https://github.com/ddps-lab/architect-cloud.git>
cd /home/ubuntu/architect-cloud/2024
chown ubuntu -R monolithic_code/
cd monolithic_code
npm install

#RDS setup
#######################################
export RDS_DB_EP=inventory-instance-1.cjs66g8s4qod.us-west-2.rds.amazonaws.com
#######################################
echo "export RDS_DB_EP=${RDS_DB_EP}" >> /home/ubuntu/.bashrc
# mysql -u admin -plab-password -h ${RDS_DB_EP} -P 3306 -e "CREATE USER 'nodeapp' IDENTIFIED WITH mysql_native_password BY 'coffee'";
# mysql -u admin -plab-password -h ${RDS_DB_EP} -P 3306 -e "GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'nodeapp'@'%' WITH GRANT OPTION;"
# mysql -u admin -plab-password -h ${RDS_DB_EP} -P 3306 -e "CREATE DATABASE COFFEE;"
# mysql -u admin -plab-password -h ${RDS_DB_EP} -P 3306 -e "USE COFFEE; CREATE TABLE suppliers(id INT NOT NULL AUTO_INCREMENT,name VARCHAR(255) NOT NULL,address VARCHAR(255) NOT NULL,city VARCHAR(255) NOT NULL,state VARCHAR(255) NOT NULL,email VARCHAR(255) NOT NULL,phone VARCHAR(100) NOT NULL,PRIMARY KEY ( id ));"

#sed the config file
sed -i "s|REPLACE-DB-HOST|${RDS_DB_EP}|g" /home/ubuntu/architect-cloud/2024/monolithic_code/app/config/config.js
sleep 2
sed -i "s|REPLACE-DB-HOST|${RDS_DB_EP}|g" /home/ubuntu/architect-cloud/2024/container_code/app/config/config.js
sleep 2
#start the app
node index.js &

#ensure app starts at boot for all lab sessions
cat <<EOF > /etc/rc.local
#!/bin/bash
cd /home/ubuntu/architect-cloud/2024/monolithic_code/
sudo node index.js
EOF
chmod +x /etc/rc.local

2. Docker 설치

  1. SSH접속
  2. 아래 명령어로 docker 설치
#!/bin/bash
sudo apt-get update -y
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y
curl -fsSL <https://download.docker.com/linux/ubuntu/gpg> | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] <https://download.docker.com/linux/ubuntu> $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update -y
sudo apt install docker-ce -y
sudo usermod -aG docker $USER
newgrp docker 
bash install_docker.sh
docker build --tag coffee_suppliers_container .
docker run -d --name coffee_suppliers_container -p 8080:8080 coffee_suppliers_container