๋ชฉ๋ก์ ์ฒด ๊ธ (1005)
๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
=> Node.js E-Commerce App with REST API: Let's Build a Real-Life Example! ๐ท ๋น๋ฐ๋ฒํธ๋ฅผ ์๊ณ ์์ ๊ฒฝ์ฐ ๋น๋ฐ๋ฒํธ ์ฌ์์ (PUT) UserSchema.pre("save", async function (next) { if (!this.isModified("password")) { next(); } // Create a new User // 1) ์ฐ์ ๋น๋ฐ๋ฒํธ ํด์ฌํ(์ํธํ) this.password = await bcrypt.hash(this.password, 12); this.passwordConfirm = undefined; next(); }); // ๋น๋ฐ๋ฒํธ ์ฌ์์ ๋ ์ง UserSchema.pre('save', function (next) {..
๐ฉ๐ป Oh My BASH! https://ohmybash.nntoan.com/ โ ์ค์น ๋ ์ ์๋ ๋ช ๋ น์ด ํจํค์ง ์ค์น.. sudo yum install zsh sudo yum install git bash -c "$(curl -fsSL https://raw.githubusercontent.com/ohmybash/oh-my-bash/master/tools/install.sh)"
๐ Dockerfile : ์ปจํ ์ด๋๋ฅผ ์ด๋ป๊ฒ ๋ง๋ค์ด์ผ ํ๋์ง์ ๋ํ ์ค๋ช ์ ๐ ํ์ผ ๋ช ๋ น์ด FROM : ์ด๋ค ๋ฆฌ๋ ์ค๋ฅผ ์ฌ์ฉํ ๊ฒ์ธ๊ฐ COPY : ๋ณต๋ถํ ๊ฒฝ๋ก ๋ง๋ค๊ธฐ WORKDIR : ์ปจํ ์ด๋์์ ๋ช ๋ น์ด๊ฐ ์คํ๋๋ ๋๋ ํ ๋ฆฌ RUN : ์ปจํ ์ด๋๋ฅผ ๊ตฌ์ฑํ ํ์ผ ๋ง๋ค ๋ ์ฌ์ฉ CMD : ์ปจํ ์ด๋๊ฐ ์คํ๋ ํ์ ์คํํ ๋ช ๋ น์ด, ์ด๋ฏธ์ง ๋ง๋ค ๋ ์คํ ๐ Dockerfile ๋ก container ์คํํ๊ธฐ ๐ Dockerfile ์์ฑํ๊ธฐ FROM python:3.8-alpine COPY . /app WORKDIR /app RUN pip3 install flask RUN chmod +x /app/app.py CMD ["python3", "app.py"] ๐ container ๋น๋ํ๊ธฐ docker build -t flas..
๐ Flask ๋ฅผ ์ํ ์ธํ python3 download ํ๊ธฐ ๐ ํ๋ก์ ํธ ํ ํด๋ ๋ง๋ค๊ธฐ ๐ ๊ฐ์ํ๊ฒฝ์ผ๋ก ๋ค์ด๊ฐ๊ธฐ ๐ flask ์ค์นํ๊ธฐ pip install flask ๐ ํจํค์ง ๋ชฉ๋ก ํ์ธ pip freeze ๐ Flask app ์ด๊ธฐ from flask import Flask app = Flask(__name__) @app.route("/") def hello_world() : return "Hello world!!!!" if __name__ == "__main__" : app.run(host = "0.0.0.0", port = 5000)
๐ Container ๋ง๋ค๊ธฐ ๐ ์ค์น๋ image ๋ณด๊ธฐ docker ps ๐ ํ์ฌ ์คํ ์ค์ธ container ๋ณด๊ธฐ docker container ls = docker ps ๐ image ์ง์ฐ๊ธฐ container ๊ฐ exited ๋์ด๋ docker kill ~~id ๊น์ง ํด์ผ image๊ฐ ์ง์์ง docker rmi ~~
๐ Docker ๋ก nginx ๋ฐฐํฌํ๊ธฐ ๐ cmd ๋ก ๋ค์ด๊ฐ๊ธฐ docker ps ๐ nginx ์คํํ๊ธฐ docker run nginx ๐ cmd PORT:PORT host ํฌํธ (๋ ธํธ๋ถ ์ธ๋ถ ํฌํธ) : container ํฌํธ (๋ด๋ถ ํฌํธ) docker run -p 80:80 nginx ๐ Daemon ์ผ๋ก ๋์๋ณด๊ธฐ (cmd ๋ซ์๋ ์คํ๋จ) ๐ image ๋ณด๊ธฐ docker images ๐ container ๋ค์ด ์ํค๊ธฐ docker kill [container_id]
=> Node.js E-Commerce App with REST API: Let's Build a Real-Life Example! ๐ท Product Schema & Route & Controller ๊ตฌ์ฑ ๐ท Product Schema๋ฅผ MongoDB์ ์ ์ก (POST) ๐ท Product Schema ์กฐํ (GET) ๐ท Product ์์ (PUT) slugify : ํ ์คํธ๋ฅผ url ์ฃผ์๋ก ๋ณํํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ slug : ์ด๋ฏธ ์ป์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํจํ URL์ ์์ฑ (URL๊ณผ ์๋ฏธ์๋ ์ด๋ฆ์ ์ฌ์ฉ) npm i slugify โ ์์ ํ๊ณ ์ ํ๋ title์ slug ํํ๋ก ์ง์ด๋ฃ๊ธฐ req.body.slug = slugify(req.body.title); โ ์์ ํ๊ธฐ ์ ์ ๊ด๋ฆฌ์์ธ์ง middlewar..
๐ ์ปจํ ์ด๋ : ์ด๋ ํ๊ฒฝ์ด๋ ์ด๋ ์ธํ๋ผ๋ก๋ ์ฝ๊ฒ ์ด๋ ๊ฐ๋ฅ : ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ธฐ ์ํ ์ปดํจํ ์์ ์ ํจํค์งํ์ฌ ์ด๋ฏธ์ง๋ก ๋ง๋ค๊ธฐ ๋๋ฌธ์ ๊ฒฝ๋ํ : ์๋ฒ๋ OS ํ๊ฒฝ์ ์ข ์์ ์ด์ง ์์ ์ง์ ํ ์ ํ๋ฆฌ์ผ์ด์ ์ด์์ฑ์ด ์คํ ๐ ํ์ดํผ๋ฐ์ด์ ๊ธฐ๋ฐ์ ๊ฐ์ํ(VM ๋ฐฉ์) : ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋์๊ฐ ์ ์๋ OS ํ๊ฒฝ์ด ํฌํจ : ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ธฐ ์ํด์๋ VM์ ๋์ ์์์ ํ ๋นํ ๋ค์, OS๋ฅผ ๋ถํ ํ ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆผ ๐ ์ปจํ ์ด๋ ๊ธฐ๋ฐ์ ๊ฐ์ํ ๋ฐฉ์ : ํ๋ก์ธ์ค ๊ฐ ๋ฒฝ์ ๋ง๋ค์ด ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ตฌ๋๋๋ ํ๊ฒฝ์ด ๊ฒฉ๋ฆฌ(์ปจํ ์ด๋ํ) : ๊ฐ๊ฐ์ APP์ OS๋ฅผ ๊ฐ๋ณ๋ก ๊ตฌ์ฑํด์ค ํ์ ์์ด ํ๋์ OS ์ปค๋์ ๊ณต์ ํ์ฌ ์ฌ์ฉ : ๋ ๊ฐ๋ณ๊ณ ํฌ๊ธฐ๋ ์์ ๋ณต์ ์ ๋ฐฐํฌ์๋ ๊ฐํธ ๐ ๋์ปค ์ด๋ฏธ์ง (Doc..