<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>성장에 목마른 코린이</title>
    <link>https://mhp4718.tistory.com/</link>
    <description>미국에서 11년간 살다 다시 미국에서 개발자로 일하고 싶은 코린이입니다!
실리콘 밸리가 목표에요!
부족함이없도록 계속해서 발전해 나가겠습니다!
구독 눌러주세요!!! 구독은 사랑입니다 &amp;lt;3</description>
    <language>ko</language>
    <pubDate>Wed, 1 Jul 2026 20:19:37 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>성장하는 코린이</managingEditor>
    <image>
      <title>성장에 목마른 코린이</title>
      <url>https://tistory1.daumcdn.net/tistory/5186880/attach/0b38752fd0bf4ab6852b094f6fa1874b</url>
      <link>https://mhp4718.tistory.com</link>
    </image>
    <item>
      <title>[DB] Docker 로 MySQL/MariaDB 세팅</title>
      <link>https://mhp4718.tistory.com/entry/DB-Docker-%EB%A1%9C-MySQLMariaDB-%EC%84%B8%ED%8C%85</link>
      <description>&lt;h1&gt;Docker Compose로 MySQL/MariaDB 세팅&lt;/h1&gt;
&lt;h2&gt;Docker 설치 및 설정 파일 세팅&lt;/h2&gt;
&lt;h3&gt;Docker와 Docker Compose 설치&lt;/h3&gt;
&lt;p&gt;맥의 경우, Docker만 설치하면 Docker Compose가 포함되어 있기에 추가로 설치해줄 필요가 없습니다.&lt;/p&gt;
&lt;h3&gt;프로젝트 내에 docker-compose.yml 생성 및 내용 추가&lt;/h3&gt;
&lt;h3&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;version: &amp;quot;3.7&amp;quot;
services:
  test:
    image: mariadb:10.4
    container_name: test
    env_file: .env
    environment:
      TZ: Asia/Seoul
    networks:
      - database
    ports:
      - 3306:3306
    restart: always
    volumes:
      - ./db/conf.d:/etc/mysql/conf.d
      - ./db/data:/var/lib/mysql
networks:
  database:&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;image: mariadb:10는 MariaDB 10 이미지를 사용한다는 의미입니다.&lt;/li&gt;
&lt;li&gt;ports: DB의 3306 포트를 열어준다는 의미입니다.&lt;/li&gt;
&lt;li&gt;volumes: Docker 컨테이너의 파일을 사용자 시스템의 파일에 연결한다는 의미입니다.&lt;/li&gt;
&lt;li&gt;TZ: DB의 시간대를 설정하는 용도입니다.&lt;/li&gt;
&lt;li&gt;volumes: 컨테이너가 삭제될 시 데이터도 날아갈 수 있기때문에, 저장소는 반드시 외부로 마운트를 해줘야 합니다.&lt;ul&gt;
&lt;li&gt;/etc/mysql/conf.d는 MySQL/MariaDB의 설정 파일이 위치하는 경로입니다.&lt;/li&gt;
&lt;li&gt;/var/lib/mysql은 DB의 데이터가 파일 형태로 저장되는 공간입니다&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;.env 파일 생성 및 내용 추가&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=password
MYSQL_DATABASE=test
MYSQL_USER=tester
MYSQL_PASSWORD=password&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;db라는 빈 디렉터리 생성&lt;/h3&gt;
&lt;p&gt;docker-compose.yml가 위치한 디렉터리에 말그대로 db라는 빈 디렉터리를 생성하면 됩니다.&lt;/p&gt;
&lt;h2&gt;Docker MySQL/MariaDB 컨테이너 생성 및 실행&lt;/h2&gt;
&lt;h3&gt;Docker에 MySQL/MariaDB 컨테이너 생성&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;$ docker-compose up&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;백그라운드에서 실행 시 up 뒤에 옵션 &lt;code&gt;-d&lt;/code&gt;를 추가해주면됩니다.&lt;/p&gt;
&lt;h3&gt;MySQL/MariaDB 컨테이너 bash 쉘 접속&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;$ docker exec -it test bash&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;test를 한 이유는 아까 docker-compose.yml 파일에서 컨테이너 이름을 test로 지정해줬기 때문입니다.&lt;/p&gt;
&lt;h3&gt;MySQL/MariaDB 서버 접속&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;$ mysql -u root -p
mysql &amp;gt; [.env파일에 있는 패스워드]&lt;/code&gt;&lt;/pre&gt;</description>
      <category>데이터베이스</category>
      <category>Docker</category>
      <category>docker-compose</category>
      <category>MariaDB</category>
      <category>mysql</category>
      <author>성장하는 코린이</author>
      <guid isPermaLink="true">https://mhp4718.tistory.com/375</guid>
      <comments>https://mhp4718.tistory.com/entry/DB-Docker-%EB%A1%9C-MySQLMariaDB-%EC%84%B8%ED%8C%85#entry375comment</comments>
      <pubDate>Wed, 30 Nov 2022 08:36:12 +0900</pubDate>
    </item>
    <item>
      <title>[Linux] scp, sftp 사용법</title>
      <link>https://mhp4718.tistory.com/entry/Linux-scp-sftp-%EC%82%AC%EC%9A%A9%EB%B2%95</link>
      <description>&lt;h2 id=&quot;사용법&quot; data-ke-size=&quot;size26&quot;&gt;사용법&lt;/h2&gt;
&lt;pre class=&quot;shell&quot;&gt;&lt;code&gt;&amp;gt; scp [options] [source] [target]

# source : 파일을 보낼 주소
# target : 파일을 받을 주소&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보낼 파일의 주소로&lt;span&gt;&amp;nbsp;&lt;/span&gt;파일명만 명시했더니&lt;span&gt;&amp;nbsp;&lt;/span&gt;permission denied가 떴다. 이후&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;절대경로&lt;/b&gt;로 변경해주니 파일이 잘 전송된 것을 확인 할 수 있었다.&lt;/p&gt;
&lt;h4 id=&quot;1-로컬에서-원격으로-localremote&quot; data-ke-size=&quot;size20&quot;&gt;1. 로컬에서 원격으로 (Local&amp;rarr;Remote)&lt;/h4&gt;
&lt;pre class=&quot;groovy&quot;&gt;&lt;code&gt;&amp;gt; scp [전송할 파일 경로] [유저명]@[IP주소]:[받을 경로]

EX) 로컬의 /home/example.txt 파일을 원격지의 /home/test 디렉토리로 전송
&amp;gt; scp /home/example.txt dhj@141.211.xx.xxx:/home/test&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;2-원격에서-로컬로-remotelocal&quot; data-ke-size=&quot;size20&quot;&gt;2. 원격에서 로컬로 (Remote&amp;rarr;Local)&lt;/h4&gt;
&lt;pre class=&quot;groovy&quot;&gt;&lt;code&gt;&amp;gt; scp [유저명]@[IP주소]:[전송할 파일 경로] [받을 경로]

EX) 원격지의 /home/test.txt 파일을 로컬의 /home/example 디렉토리로 전송
&amp;gt; scp dhj@141.211.xx.xxx:/home/test.txt /home/example&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;3-원격에서-원격으로-remoteremote&quot; data-ke-size=&quot;size20&quot;&gt;3. 원격에서 원격으로 (Remote&amp;rarr;Remote)&lt;/h4&gt;
&lt;pre class=&quot;groovy&quot;&gt;&lt;code&gt;&amp;gt; scp [유저명]@[IP주소]:[전송할 파일 경로] [유저명]@[IP주소]:[받을 경로]

EX) A 원격지의 /home/test.txt 파일을 B 원격지의 /home/example 디렉토리로 전송
&amp;gt; scp dhj@141.211.xx.xxx:/home/test.txt gildong@141.223.xx.xxx:/home/example&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 id=&quot;옵션-options&quot; data-ke-size=&quot;size26&quot;&gt;옵션 (options)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;-r: 폴더를 복사할 때 사용(전송 대상을 폴더로 지정). 모든 폴더들을 재귀적으로 복사함.&lt;/li&gt;
&lt;li&gt;-P: ssh 포트 지정&lt;/li&gt;
&lt;li&gt;-i: identity file을 지정해서 사용(identity file 경로를 지정)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;stylus&quot;&gt;&lt;code&gt;&amp;gt; ex) scp -i ~/.ssh/dhj-server-private ~/example.txt dhj@141.223.xx.xxx:/home/test&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;-v: 상세내용을 보면서 디버깅 할 때 사용(verbose 모드)&lt;/li&gt;
&lt;li&gt;-p: 전송 시 파일 수정 시간과 권한을 유지&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;&amp;gt; ex) scp -P 22 dhj@141.223.xx.xxx:/home/dhj/example.txt /home/test&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 id=&quot;복수의-파일-전송&quot; data-ke-size=&quot;size26&quot;&gt;복수의 파일 전송&lt;/h2&gt;
&lt;h4 id=&quot;1-로컬에서-원격으로-localremote-1&quot; data-ke-size=&quot;size20&quot;&gt;1. 로컬에서 원격으로 (Local&amp;rarr;Remote)&lt;/h4&gt;
&lt;pre class=&quot;inform7&quot;&gt;&lt;code&gt;&amp;gt; scp [옵션] [파일명1] [파일명2] [유저명]@[IP주소]:[받을 경로]&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;2-원격에서-로컬로-remotelocal-1&quot; data-ke-size=&quot;size20&quot;&gt;2. 원격에서 로컬로 (Remote&amp;rarr;Local)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1번의 경우와 다르게 원격지에서 보낼 파일들의 경로를 &amp;ldquo; &amp;ldquo;을 이용해 묶어준다.&lt;/p&gt;
&lt;pre class=&quot;inform7&quot;&gt;&lt;code&gt;&amp;gt; scp [옵션] [유저명]@[IP주소]:&quot;[파일명1] [파일명2]&quot; [받을 경로]&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;3-원격에서-원격으로-remoteremote-1&quot; data-ke-size=&quot;size20&quot;&gt;3. 원격에서 원격으로 (Remote&amp;rarr;Remote)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마찬가지로 원격지에서 보낼 파일들의 경로를 &amp;ldquo; &amp;ldquo;을 이용해 묶어준다.&lt;/p&gt;
&lt;pre class=&quot;inform7&quot;&gt;&lt;code&gt;&amp;gt; scp [옵션] [유저명]@[IP주소]:&quot;[파일명1] [파일명2]&quot; [유저명]@[IP주소]:[받을 경로]&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;SFTP&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;sftp는 접근후 put으로 파일을 올려야함 scp랑 방식이 다름&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;접근&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;sftp [유저명]@[ip주소]&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;올리기&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;sftp&amp;gt; put [파일명]&lt;/p&gt;</description>
      <category>OS (Operating System)/Linux</category>
      <category>linux</category>
      <category>scp</category>
      <category>sftp</category>
      <author>성장하는 코린이</author>
      <guid isPermaLink="true">https://mhp4718.tistory.com/374</guid>
      <comments>https://mhp4718.tistory.com/entry/Linux-scp-sftp-%EC%82%AC%EC%9A%A9%EB%B2%95#entry374comment</comments>
      <pubDate>Tue, 29 Nov 2022 20:00:55 +0900</pubDate>
    </item>
    <item>
      <title>[Git] github/gitlab 원격저장소에서만 필요없는 파일 제거</title>
      <link>https://mhp4718.tistory.com/entry/Git-githubgitlab-%EC%9B%90%EA%B2%A9%EC%A0%80%EC%9E%A5%EC%86%8C%EC%97%90%EC%84%9C%EB%A7%8C-%ED%95%84%EC%9A%94%EC%97%86%EB%8A%94-%ED%8C%8C%EC%9D%BC-%EC%A0%9C%EA%B1%B0</link>
      <description>&lt;h1&gt;github/gitlab 원격저장소에서만 필요없는 파일 제거&lt;/h1&gt;
&lt;h3&gt;깜빡하고 .gitignore에 추가하지 않은채 푸쉬를 해버린 파일들을 쉽게 지우는 방법&lt;/h3&gt;
&lt;p&gt;.gitignore를 작성하지 않았다면, 지금이라도 .gitignore를 작성해주고, 저장소에서 node_modules 디렉토리를 삭제해줍니다. &lt;br&gt;&lt;/p&gt;
&lt;p&gt;package.json파일과 package-lock.json파일이 있다면 &lt;br&gt;&lt;br&gt;npm init 명령어를 통해 언제든지 node_modules 디렉토리를 생성할 수 있으니 삭제할 때 걱정하지 않아도 됩니다.&lt;/p&gt;
&lt;h2&gt;원격저장소에서만 필요없는 파일 제거하기&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;git rm --cached 파일명
git rm --cached -r 폴더명&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;옵션 설명&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;--cached: 원격저장소만 해당
-r: recursive(재귀적으로), 디렉토리와 하위 내용 삭제&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;예시&lt;/h2&gt;
&lt;h3&gt;원격저장소의 node_modules 삭제하기&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;git rm --cached -r node_modules&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Git</category>
      <category>Git</category>
      <category>원격저장소</category>
      <author>성장하는 코린이</author>
      <guid isPermaLink="true">https://mhp4718.tistory.com/373</guid>
      <comments>https://mhp4718.tistory.com/entry/Git-githubgitlab-%EC%9B%90%EA%B2%A9%EC%A0%80%EC%9E%A5%EC%86%8C%EC%97%90%EC%84%9C%EB%A7%8C-%ED%95%84%EC%9A%94%EC%97%86%EB%8A%94-%ED%8C%8C%EC%9D%BC-%EC%A0%9C%EA%B1%B0#entry373comment</comments>
      <pubDate>Thu, 24 Nov 2022 09:00:21 +0900</pubDate>
    </item>
    <item>
      <title>[배포] Docker Compose</title>
      <link>https://mhp4718.tistory.com/entry/%EB%B0%B0%ED%8F%AC-Docker-Compose</link>
      <description>&lt;h1&gt;Docker Compose&lt;/h1&gt;
&lt;p&gt;여러 개의 컨테이너가 하나의 Application으로 동작할 때,&lt;br&gt;&lt;br&gt;이를 테스트하려면 각 컨테이너를 하나씩 생성해야 합니다. &lt;br&gt;&lt;br&gt;여러 개의 컨테이너로 구성된 Application을 구축하기 위해서 run 명령어를 여러 번 사용할 수 있지만, &lt;br&gt;&lt;br&gt;테스트 단계에서는 매번 run 명령어에 옵션을 설정해서 진행하기에 번거로움이 있습니다.&lt;/p&gt;
&lt;p&gt;이를 위해 &lt;code&gt;Docker Compose&lt;/code&gt;는 &lt;code&gt;YAML&lt;/code&gt;파일을 통해 여러 개의 컨테이너의 실행을 한번에 관리하여, &lt;br&gt;&lt;br&gt;하나의 프로젝트처럼 다룰 수 있는 환경을 제공합니다.&lt;/p&gt;
&lt;h2&gt;예시&lt;/h2&gt;
&lt;p&gt;웹 어플리케이션을 서비스 한다고 했을 때 서비스가 실행되기 위해서는 웹서버(Apache, Nginx)와 &lt;br&gt;&lt;br&gt;Database(Oracle,MariaDB,MySQL)컨테이너를 생성해야 합니다. &lt;br&gt;&lt;/p&gt;
&lt;h4&gt;Docker로 해당 서비스를 수행한다고 하면 아래와 같이 매번 docker run 옵션을 설정해 CLI컨테이너를 생성해야 합니다. &lt;br&gt;&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;Docker 를 통한 웹 서비스 컨테이너 생성 방법&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;pre&gt;&lt;code&gt;# Mysql 컨테이너 생성
$ docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=&amp;lt;password&amp;gt; -d -p 3306:3306 mysql:latest

#Apache 컨테이너 생성
$ docker run -d --name apache -p 8080:80 httpd&lt;/code&gt;&lt;/pre&gt;&lt;h4&gt;Docker Compse는 이런 번거로움을 해결하기 위해 여러 컨테이너를 하나의 서비스로 묶어 다룰 수 있는 작업환경을 제공합니다.&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;Docker-Compose(&lt;code&gt;docker-compose.yml&lt;/code&gt;)를 이용한 웹 서비스 컨테이너 생성&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdtByBA%2Fbtryk1TBqa8%2Fs2CMUsOW8y4ekkKIPoxMHk%2Fimg.png&quot;&gt;

&lt;p&gt;위 그림 처럼 Docker Compose는 &lt;code&gt;docker-compose.yml&lt;/code&gt;에 서비스할 컨테이너를 정의하고 묶음으로 관리할 수 있습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;docker-compose.yml&lt;ul&gt;
&lt;li&gt;version: YAML 파일 포맷 버전&lt;/li&gt;
&lt;li&gt;service: 생성될 컨테이너들의 묶음&lt;/li&gt;
&lt;li&gt;apache, mysql: 생성할 서비스 이름&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;version: &amp;quot;3.8&amp;quot;
services:
   apache:
    build: &amp;#39;./apache/&amp;#39;
    depends_on:
      - mysql
    networks:
      - frontend
      - backend
    ports:
      - &amp;quot;8080:80&amp;quot;
    volumes:
      - ./public_html/:/var/www/html/
  mysql:
    image: mysql:5.6.40
    networks:
      - backend
    environment:
      - MYSQL_ROOT_PASSWORD=rootpassword
networks:
  frontend:
  backend:&lt;/code&gt;&lt;/pre&gt;</description>
      <category>배포</category>
      <category>Docker</category>
      <category>docker compose</category>
      <author>성장하는 코린이</author>
      <guid isPermaLink="true">https://mhp4718.tistory.com/372</guid>
      <comments>https://mhp4718.tistory.com/entry/%EB%B0%B0%ED%8F%AC-Docker-Compose#entry372comment</comments>
      <pubDate>Thu, 24 Nov 2022 08:58:40 +0900</pubDate>
    </item>
    <item>
      <title>[배포] Docker</title>
      <link>https://mhp4718.tistory.com/entry/%EB%B0%B0%ED%8F%AC-Docker</link>
      <description>&lt;h1&gt;Docker&lt;/h1&gt;
&lt;p&gt;Go 언어로 작성된 리눅스 컨테이너 기반 오픈소스 가상화 플랫폼입니다.&lt;br&gt;이걸 왜 쓰는지, 어떤 식으로 쓰는지 알아보도록 하겠습니다.&lt;/p&gt;
&lt;h2&gt;가상화를 사용하는 이유&lt;/h2&gt;
&lt;p&gt;서버 관리자 입장에서 CPU 사용률이 현저히 낮은 서버들을 그대로 두면 &lt;code&gt;리소스 낭비, 돈 낭비&lt;/code&gt;입니다. &lt;br&gt;&lt;br&gt;그렇다고 모든 서비스들을 한 서버안에 올리면 &lt;code&gt;안정성이 바닥&lt;/code&gt;을 칠 것입니다.&lt;/p&gt;
&lt;p&gt;여기에 &lt;code&gt;안정성을 높이며 리소스도 최대한 활용할 수 있는&lt;/code&gt;, 혜성처럼 등장한 것이 &lt;code&gt;서버 가상화&lt;/code&gt;입니다.&lt;br&gt;대표적인 가상화 플랫폼으로는 VM(Virtual Machine)이 있습니다.&lt;/p&gt;
&lt;h2&gt;컨테이너란?&lt;/h2&gt;
&lt;p&gt;현실 세계에서 컨테이너는 물자를 운송할 때 쓰는 물건입니다. &lt;br&gt;&lt;br&gt;컨테이너 내용물의 소유자는 컨테이너가 배송되는 방법에 신경 쓸 필요가 없습니다. &lt;br&gt;&lt;br&gt;또한 배송사는 내용물을 알거나 관리할 필요 없이 컨테이너를 목적지까지 운송합니다. &lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;컨테이너&lt;/code&gt;는 가상화 기술 중 하나로, &lt;br&gt;&lt;br&gt;기존 OS를 가상화시키던 것과 달리 OS 레벨의 &lt;code&gt;가상화로 프로세스를 격리시켜 동작하는 방식&lt;/code&gt;이라고 합니다.&lt;/p&gt;
&lt;h2&gt;VM 가상화 vs 컨테이너 가상화&lt;/h2&gt;
&lt;p&gt;기존의 가상화나 클라우드 컴퓨팅을 설명할 때는 &lt;code&gt;VMware&lt;/code&gt;나 &lt;code&gt;VirtualBox&lt;/code&gt;와 같은 &lt;code&gt;VM&lt;/code&gt;이 언급되어졌습니다.&lt;br&gt;&lt;br&gt;이러한 &lt;code&gt;VM&lt;/code&gt;은 &lt;code&gt;호스트 OS위에 게스트 OS 전체를 가상화&lt;/code&gt;하여 사용하던 방식입니다. &lt;br&gt;&lt;br&gt;이 방식은 &lt;code&gt;거의 완벽하에 게스트와 호스트가 분리된다는 장점&lt;/code&gt;이 있지만, 아무래도 OS 여러개를 돌려서 &lt;code&gt;상대적으로 무겁고 느립니다&lt;/code&gt;.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;컨테이너는 이러한 &lt;code&gt;VM&lt;/code&gt;의 성능적 단점을 보다 개선한 시스템입니다.&lt;br&gt;&lt;br&gt;컨테이너 기반 가상화는 &lt;code&gt;Docker&lt;/code&gt;엔진 위에 OS가 아닌 Application 실행에 필요한 바이너리만 올립니다.&lt;br&gt;&lt;br&gt;또한 컨테이너 기반 가상화는 Host의 커널을 공유하기 때문에 성능의 효율을 더 높일 수 있습니다. &lt;br&gt;&lt;/p&gt;
&lt;p&gt;컨테이너를 사용하는 것은 가상 머신을 생성하는 것과는 다른 개념입니다. &lt;br&gt;&lt;br&gt;호스트 OS가 사용하는 자원을 분리하여 여러 운영 환경을 만들 수 있도록 하는 것입니다. &lt;br&gt;&lt;/p&gt;
&lt;img src=&quot;https://velog.velcdn.com/images/whitebear/post/95cff163-02a3-4853-8a52-36de10ad5c03/image.png&quot;&gt;

&lt;p&gt;딱 봐도 구조가 훨씬 간단하고, 이렇게 구조 레이어가 간단한 &lt;code&gt;컨테이너&lt;/code&gt;가 &lt;code&gt;VM&lt;/code&gt;보다 성능을 높이기 쉽습니다.&lt;/p&gt;
&lt;h2&gt;Docker&lt;/h2&gt;
&lt;p&gt;컨테이너를 사용할 때 &lt;code&gt;Docker&lt;/code&gt;를 사용하면 간단한 명령으로 &lt;code&gt;컨테이너 이미지&lt;/code&gt;를 만들고 저장할 수 있습니다.&lt;br&gt;&lt;br&gt;또한 도커를 설치한 호스트에 &lt;code&gt;컨테이너 이미지&lt;/code&gt;를 다운로드해서 컨테이너를 실행할 수 있습니다.&lt;/p&gt;
&lt;h3&gt;여기서 컨테이너 이미지란?&lt;/h3&gt;
&lt;p&gt;컨테이너를 실행하기 위한 모든 것을 가지고 있는 것입니다.&lt;br&gt;&lt;br&gt;(immutable) 이미지는 상태값을 가지지 않고 변하지 않습니다.&lt;/p&gt;
&lt;p&gt;예를 들어 ubuntu 이미지는 ubuntu를 실행하기 위한 모든 파일을 가지고 있으며, &lt;br&gt;&lt;br&gt;MySQL 이미지는 MySQL을 실행하는 데 필요한 파일과 실행 명령어, 포트 등을 가지고 있습니다. &lt;br&gt;&lt;/p&gt;
&lt;p&gt;이제 새로운 서버가 추가된다면, 미리 만들어놓은 이미지를 다운받고 컨테이너를 생성하기만 하면 됩니다. &lt;br&gt;&lt;br&gt;한 서버에 여러 컨테이너를 실행할 수 있습니다.&lt;/p&gt;
&lt;h2&gt;초간단 Docker 사용법&lt;/h2&gt;
&lt;p&gt;도커에서는 도커 이미지를 이용하여 컨테이너를 생성할 수 있다.&lt;br&gt;도커 이미지를 사용해 이미지에 설정해둔 대로 컨테이너의 구성 환경을 적용할 수 있다.&lt;/p&gt;
&lt;p&gt;이미지 목록 보기&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ sudo docker images&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;이미지 검색&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ sudo docker search [이미지 이름]&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;이미지 받기&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ sudo docker pull [이미지 이름]:[버전]&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;이미지 삭제&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ sudo docker rmi [이미지 id]&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;컨테이너 목록 보기&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ sudo docker ps&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;컨테이너 실행&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ sudo docker run [options] image[:TAG|@DIGEST] [COMMAND] [ARG...]&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;컨테이너 시작/재시작&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ sudo docker start [컨테이너 id 또는 name]
$ sudo docker restart [컨테이너 id 또는 name]&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;컨테이너 접속&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ sudo docker attach [컨테이너 id 또는 name]&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;컨테이너 정지&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ sudo docker stop [컨테이너 id 또는 name]&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;컨테이너 삭제&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ sudo docker rm [컨테이너 id 또는 name]&lt;/code&gt;&lt;/pre&gt;</description>
      <category>배포</category>
      <category>Docker</category>
      <category>가상화</category>
      <category>배포</category>
      <category>컨테이너</category>
      <author>성장하는 코린이</author>
      <guid isPermaLink="true">https://mhp4718.tistory.com/371</guid>
      <comments>https://mhp4718.tistory.com/entry/%EB%B0%B0%ED%8F%AC-Docker#entry371comment</comments>
      <pubDate>Thu, 24 Nov 2022 08:57:35 +0900</pubDate>
    </item>
    <item>
      <title>[Node.js] Babel을 통해 ES5 -&amp;gt; ES6 사용하기 with nodemon</title>
      <link>https://mhp4718.tistory.com/entry/Nodejs-Babel%EC%9D%84-%ED%86%B5%ED%95%B4-ES5-ES6-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-with-nodemon</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;136&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/do0E9x/btrRUsq5sBZ/znAOt61JFuUaaBTwkkfj31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/do0E9x/btrRUsq5sBZ/znAOt61JFuUaaBTwkkfj31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/do0E9x/btrRUsq5sBZ/znAOt61JFuUaaBTwkkfj31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdo0E9x%2FbtrRUsq5sBZ%2FznAOt61JFuUaaBTwkkfj31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;136&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;136&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;babel은 ECMA script 2015+ 코드를 &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;현재 및 이전 브라우저 또는 환경에서 호환 가능한 버전의 javascript 문법으로 바꿔주는 툴 체인입니다.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id=&quot;1-babel-설치&quot; data-ke-size=&quot;size26&quot;&gt;1. Babel 설치&lt;/h2&gt;
&lt;pre id=&quot;code_1669185935619&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ npm i -D @babel/core @babel/node @babel/preset-env&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트의 루트 디렉토리에서 위 명령으로&lt;span&gt;&amp;nbsp;&lt;/span&gt;babel/core,babel/node,babel/preset-env를 설치해 줍니다.&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;babel/core는&amp;nbsp;babel을 사용하기 위한 필수 패키지&lt;/li&gt;
&lt;li&gt;babel/node는 코드의 변환과 실행을 한번해 할 수 있게 하기 위해&lt;/li&gt;
&lt;li&gt;babel/preset-env는 여러 플러그인이나 프리셋을 사용하기 위해 설치합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;2-babelrc-생성하기&quot; data-ke-size=&quot;size26&quot;&gt;2. .babelrc 생성하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 루트 디렉토리에&lt;span&gt;&amp;nbsp;&lt;/span&gt;.babelrc&lt;span&gt;&amp;nbsp;&lt;/span&gt;파일을 생성하고 아래와 같이 내용을 작성해 줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 파일은&lt;span&gt;&amp;nbsp;&lt;/span&gt;babel의 설정 정보를 담고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 파일에 설정을 조금씩 추가해 주면서 지원하는 않는 구문, 문법, 객체등을 계속 추가하면서 사용할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1669186009837&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
  &quot;presets&quot;:[&quot;@babel/preset-env&quot;]
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;3-packagejson-수정하기&quot; data-ke-size=&quot;size26&quot;&gt;3. package.json 수정하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 루트 디렉토리&lt;span&gt;&amp;nbsp;&lt;/span&gt;package.json&lt;span&gt;&amp;nbsp;&lt;/span&gt;파일의&lt;span&gt;&amp;nbsp;&lt;/span&gt;script/start&lt;span&gt;&amp;nbsp;&lt;/span&gt;부분을 아래와 같이 수정했습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1669186143797&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&quot;scripts&quot;: {
    &quot;start&quot;: &quot;nodemon index.js --exec babel-node&quot;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존&lt;span&gt;&amp;nbsp;&lt;/span&gt;nodemon으로 실행하는 명령 뒤에&lt;span&gt;&amp;nbsp;&lt;/span&gt;--exec babel-node를 붙여주면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Javascript/Node.js</category>
      <category>Babel</category>
      <category>ES5</category>
      <category>es6</category>
      <category>node.js</category>
      <category>nodemon</category>
      <author>성장하는 코린이</author>
      <guid isPermaLink="true">https://mhp4718.tistory.com/370</guid>
      <comments>https://mhp4718.tistory.com/entry/Nodejs-Babel%EC%9D%84-%ED%86%B5%ED%95%B4-ES5-ES6-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-with-nodemon#entry370comment</comments>
      <pubDate>Wed, 23 Nov 2022 15:50:52 +0900</pubDate>
    </item>
    <item>
      <title>[DB] MariaDB 설치, 세팅, 접속 (Mac)</title>
      <link>https://mhp4718.tistory.com/entry/DB-MariaDB-%EC%84%A4%EC%B9%98-%EC%84%B8%ED%8C%85-%EC%A0%91%EC%86%8D-Mac</link>
      <description>&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;340&quot; data-origin-height=&quot;175&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GmfYA/btrRShW2V2Y/G8JBwVxWcBU3HUNFEVE5wK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GmfYA/btrRShW2V2Y/G8JBwVxWcBU3HUNFEVE5wK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GmfYA/btrRShW2V2Y/G8JBwVxWcBU3HUNFEVE5wK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGmfYA%2FbtrRShW2V2Y%2FG8JBwVxWcBU3HUNFEVE5wK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;340&quot; height=&quot;175&quot; data-origin-width=&quot;340&quot; data-origin-height=&quot;175&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id=&quot;aswift_1_host&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 id=&quot;1-mariadb-install-in-mac&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. MariaDB 설치 (Mac)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;brew install mariadb&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;mariadb 실행 및 중지&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행 :&lt;span&gt;&amp;nbsp;&lt;/span&gt;brew services start mariadb&lt;br /&gt;중지 :&lt;span&gt;&amp;nbsp;&lt;/span&gt;brew services stop mariadb&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;mariadb를 동작하는지 확인&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;brew services list&lt;/p&gt;
&lt;h2 id=&quot;2-mariadb-root-계정-생성&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. MariaDB root 계정 생성&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Mysql과 마찬가지로 MariaDB도 설치하였다면 관리자 계정인 root 계정을 설정해야합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sudo mariadb-secure-installation&lt;/p&gt;
&lt;h3 id=&quot;1-초기-root-계정의-비밀번호를-요구하는-current-password가-있을텐데-여기선-enter로-넘어가도-된다&quot; data-ke-size=&quot;size23&quot;&gt;1. 자신의 Mac Password를 입력하면 됩니다.&lt;/h3&gt;
&lt;h3 id=&quot;2-mariadb-setting이-이루어질텐데-아래와-같이-설정하면-무방할듯&quot; data-ke-size=&quot;size23&quot;&gt;2. MariaDB 세팅&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중간에 패스워드는 입력안하면 다시 sudo mariadb-secure-installation 해야합니다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Screen Shot 2022-11-23 at 9.52.30 AM.png&quot; data-origin-width=&quot;262&quot; data-origin-height=&quot;34&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdMaAt/btrRTE5eMwm/kkK3JOV6G5e0NfMFp4Ibd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdMaAt/btrRTE5eMwm/kkK3JOV6G5e0NfMFp4Ibd1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdMaAt/btrRTE5eMwm/kkK3JOV6G5e0NfMFp4Ibd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdMaAt%2FbtrRTE5eMwm%2FkkK3JOV6G5e0NfMFp4Ibd1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;262&quot; height=&quot;34&quot; data-filename=&quot;Screen Shot 2022-11-23 at 9.52.30 AM.png&quot; data-origin-width=&quot;262&quot; data-origin-height=&quot;34&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;저같은 경우엔 처음에 n 눌러서 세팅하고나니 접속이 안되더라고요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(OK, successfully used password, moving on...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Setting the root password or using the unix_socket ensures that nobody&lt;br /&gt;can log into the MariaDB root user without the proper authorisation.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;You already have your root account protected, so you can safely answer 'n'.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Switch to unix_socket authentication [Y/n] n&lt;br /&gt;... skipping.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;You already have your root account protected, so you can safely answer 'n'.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Change the root password? [Y/n] y&lt;br /&gt;New password:&lt;br /&gt;Re-enter new password:&lt;br /&gt;Password updated successfully!&lt;br /&gt;Reloading privilege tables..&lt;br /&gt;... Success!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;By default, a MariaDB installation has an anonymous user, allowing anyone&lt;br /&gt;to log into MariaDB without having to have a user account created for&lt;br /&gt;them. This is intended only for testing, and to make the installation&lt;br /&gt;go a bit smoother. You should remove them before moving into a&lt;br /&gt;production environment.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Remove anonymous users? [Y/n] y&lt;br /&gt;... Success!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Normally, root should only be allowed to connect from 'localhost'. This&lt;br /&gt;ensures that someone cannot guess at the root password from the network.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Disallow root login remotely? [Y/n] n&lt;br /&gt;... skipping.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;By default, MariaDB comes with a database named 'test' that anyone can&lt;br /&gt;access. This is also intended only for testing, and should be removed&lt;br /&gt;before moving into a production environment.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Remove test database and access to it? [Y/n] y&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Dropping test database...&lt;br /&gt;... Success!&lt;/li&gt;
&lt;li&gt;Removing privileges on test database...&lt;br /&gt;... Success!&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Reloading the privilege tables will ensure that all changes made so far&lt;br /&gt;will take effect immediately.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Reload privilege tables now? [Y/n] y&lt;br /&gt;... Success!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Cleaning up...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;All done! If you've completed all of the above steps, your MariaDB&lt;br /&gt;installation should now be secure.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Thanks for using MariaDB!&lt;/p&gt;
&lt;h3 id=&quot;3-mariadb-root-계정에-접속&quot; data-ke-size=&quot;size23&quot;&gt;3. MariaDB root 계정에 접속&lt;/h3&gt;
&lt;pre id=&quot;code_1669164806749&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// mariadb는 mysql이랑 자매 데이터베이스라 이렇게 들어가면됩니다.
mysql -u root -p&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력 하셨으면, 2번에서 입력하셨던 password 입력해주시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;password입력 안하셨으면 접속 안되니 다시 2번 따라해주세요.&lt;/p&gt;</description>
      <category>데이터베이스/MariaDB</category>
      <category>MAC</category>
      <category>MariaDB</category>
      <category>맥</category>
      <category>설치</category>
      <category>세팅</category>
      <category>접속</category>
      <author>성장하는 코린이</author>
      <guid isPermaLink="true">https://mhp4718.tistory.com/369</guid>
      <comments>https://mhp4718.tistory.com/entry/DB-MariaDB-%EC%84%A4%EC%B9%98-%EC%84%B8%ED%8C%85-%EC%A0%91%EC%86%8D-Mac#entry369comment</comments>
      <pubDate>Wed, 23 Nov 2022 09:55:53 +0900</pubDate>
    </item>
    <item>
      <title>[Node.js] 프로젝트 시작 기본 세팅</title>
      <link>https://mhp4718.tistory.com/entry/Nodejs-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%8B%9C%EC%9E%91-%EA%B8%B0%EB%B3%B8-%EC%84%B8%ED%8C%85</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. node 설치 확인&lt;/h4&gt;
&lt;pre id=&quot;code_1669163672467&quot; class=&quot;crmsh&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;node -v&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. npm init&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;package.json 추가됨&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1669163672467&quot; class=&quot;coffeescript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm init&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. express 설치&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;node_modules 폴더와 package-lock.json 파일 추가됨&lt;/p&gt;
&lt;pre id=&quot;code_1669163672468&quot; class=&quot;maxima&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm install --save express&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;4. 초기 파일 생성&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;index.js&lt;/p&gt;
&lt;pre id=&quot;code_1669163672468&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const express = require('express');
const app = express();

const port = 5000;

app.get('/', function(req, res){
    res.send('프로젝트 이름');
})

app.listen(port, () =&amp;gt; console.log(`listening to ${port}`));&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;5. nodemon 설치 및 적용&lt;/h4&gt;
&lt;pre id=&quot;code_1669166274842&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&quot;scripts&quot;: {
    &quot;start&quot;: &quot;nodemon --inspect index.js&quot;
 }&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;6. .gitignore 생성&lt;/h4&gt;
&lt;pre id=&quot;code_1669166296127&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;node_modules
dist/*
*.log
.DS_Store
.env&lt;/code&gt;&lt;/pre&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;MariaDB 세팅 한다면 아래 제 블로그 링크 클릭&lt;/h4&gt;
&lt;figure id=&quot;og_1669165206261&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[DB] MariaDB 설치, 세팅, 접속 (Mac)&quot; data-og-description=&quot;1. MariaDB 설치 (Mac) brew install mariadb mariadb 실행 및 중지 실행 : brew services start mariadb 중지 : brew services stop mariadb mariadb를 동작하는지 확인 brew services list 2. MariaDB root 계정 생성 Mysql과 마찬가지로 Mari&quot; data-og-host=&quot;mhp4718.tistory.com&quot; data-og-source-url=&quot;https://mhp4718.tistory.com/entry/DB-MariaDB-%EC%84%A4%EC%B9%98-%EC%84%B8%ED%8C%85-%EC%A0%91%EC%86%8D-Mac&quot; data-og-url=&quot;https://mhp4718.tistory.com/entry/DB-MariaDB-%EC%84%A4%EC%B9%98-%EC%84%B8%ED%8C%85-%EC%A0%91%EC%86%8D-Mac&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bWoQWO/hyQE69JOq3/D3KeKgTncoV4B51Iskqk41/img.png?width=340&amp;amp;height=175&amp;amp;face=0_0_340_175,https://scrap.kakaocdn.net/dn/bal9ZR/hyQEZitv8S/K2MqjztOgHDbEkItK4jWB1/img.png?width=340&amp;amp;height=175&amp;amp;face=0_0_340_175&quot;&gt;&lt;a href=&quot;https://mhp4718.tistory.com/entry/DB-MariaDB-%EC%84%A4%EC%B9%98-%EC%84%B8%ED%8C%85-%EC%A0%91%EC%86%8D-Mac&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://mhp4718.tistory.com/entry/DB-MariaDB-%EC%84%A4%EC%B9%98-%EC%84%B8%ED%8C%85-%EC%A0%91%EC%86%8D-Mac&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bWoQWO/hyQE69JOq3/D3KeKgTncoV4B51Iskqk41/img.png?width=340&amp;amp;height=175&amp;amp;face=0_0_340_175,https://scrap.kakaocdn.net/dn/bal9ZR/hyQEZitv8S/K2MqjztOgHDbEkItK4jWB1/img.png?width=340&amp;amp;height=175&amp;amp;face=0_0_340_175');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[DB] MariaDB 설치, 세팅, 접속 (Mac)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. MariaDB 설치 (Mac) brew install mariadb mariadb 실행 및 중지 실행 : brew services start mariadb 중지 : brew services stop mariadb mariadb를 동작하는지 확인 brew services list 2. MariaDB root 계정 생성 Mysql과 마찬가지로 Mari&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;mhp4718.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Javascript/Node.js</category>
      <category>express.js</category>
      <category>MariaDB</category>
      <category>node.js</category>
      <category>nodemon</category>
      <category>초기세팅</category>
      <author>성장하는 코린이</author>
      <guid isPermaLink="true">https://mhp4718.tistory.com/368</guid>
      <comments>https://mhp4718.tistory.com/entry/Nodejs-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%8B%9C%EC%9E%91-%EA%B8%B0%EB%B3%B8-%EC%84%B8%ED%8C%85#entry368comment</comments>
      <pubDate>Wed, 23 Nov 2022 09:47:58 +0900</pubDate>
    </item>
    <item>
      <title>[배포] 에러핸들링 - pm2 프로세스 무한증식</title>
      <link>https://mhp4718.tistory.com/entry/%EB%B0%B0%ED%8F%AC-%EC%97%90%EB%9F%AC%ED%95%B8%EB%93%A4%EB%A7%81-pm2-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EB%AC%B4%ED%95%9C%EC%A6%9D%EC%8B%9D</link>
      <description>&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;문제의 코드&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1669113102067&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&quot;start&quot;: &quot;pm2 start --restart-delay 1000 npm -name 'Dev' -- start --watch&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;사실 이 코드는 아무 문제가 없습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;근데 문제는 이걸 package.json 안의 scripts에 넣으면 아주 큰 문제가 될 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;package.json안 script에 pm2 start를 넣게되면, 아래의 이미지 처럼 프로세스가 무한으로 실행되게 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Screen Shot 2022-11-22 at 7.34.27 PM.png&quot; data-origin-width=&quot;431&quot; data-origin-height=&quot;693&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nAhyf/btrROJfQFQn/dMthwPpoRZHfpkKRZgET70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nAhyf/btrROJfQFQn/dMthwPpoRZHfpkKRZgET70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nAhyf/btrROJfQFQn/dMthwPpoRZHfpkKRZgET70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnAhyf%2FbtrROJfQFQn%2FdMthwPpoRZHfpkKRZgET70%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;431&quot; height=&quot;693&quot; data-filename=&quot;Screen Shot 2022-11-22 at 7.34.27 PM.png&quot; data-origin-width=&quot;431&quot; data-origin-height=&quot;693&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Screen Shot 2022-11-22 at 7.34.40 PM.png&quot; data-origin-width=&quot;1140&quot; data-origin-height=&quot;784&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GJSlB/btrROqAM6UP/rHbiBnr7evgsQXbjL3ToKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GJSlB/btrROqAM6UP/rHbiBnr7evgsQXbjL3ToKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GJSlB/btrROqAM6UP/rHbiBnr7evgsQXbjL3ToKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGJSlB%2FbtrROqAM6UP%2FrHbiBnr7evgsQXbjL3ToKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1140&quot; height=&quot;784&quot; data-filename=&quot;Screen Shot 2022-11-22 at 7.34.40 PM.png&quot; data-origin-width=&quot;1140&quot; data-origin-height=&quot;784&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;제가 문제를 일으킨건 아니지만, 충분히 그랬을 수도 있기에 많이 놀랐고 당황했습니다 ..&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이런 상황이 왔을 때 pm2 stop을 해 pm2를 멈추고,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;부팅해야 하는 서비스를 빨리 실행시킨다음,&lt;/p&gt;
&lt;pre id=&quot;code_1669113477890&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ps -ef | grep &quot;프로세스이름&quot; | awk '{print $2}' | xargs kill -16&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;특정 프로세스 이름을 가진 모든 프로세스를 끄는 명령어로 꺼주면 됩니다.&lt;/p&gt;</description>
      <category>배포</category>
      <category>Err-Handling</category>
      <category>PM2</category>
      <category>배포</category>
      <category>에러핸들링</category>
      <author>성장하는 코린이</author>
      <guid isPermaLink="true">https://mhp4718.tistory.com/367</guid>
      <comments>https://mhp4718.tistory.com/entry/%EB%B0%B0%ED%8F%AC-%EC%97%90%EB%9F%AC%ED%95%B8%EB%93%A4%EB%A7%81-pm2-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EB%AC%B4%ED%95%9C%EC%A6%9D%EC%8B%9D#entry367comment</comments>
      <pubDate>Tue, 22 Nov 2022 19:40:38 +0900</pubDate>
    </item>
    <item>
      <title>[배포] 에러핸들링 pm2 startup을 수행하였으나 Ubuntu reboot후 서비스들이 정상적으로 시작되지 않을 때</title>
      <link>https://mhp4718.tistory.com/entry/%EB%B0%B0%ED%8F%AC-%EC%97%90%EB%9F%AC%ED%95%B8%EB%93%A4%EB%A7%81-pm2-startup%EC%9D%84-%EC%88%98%ED%96%89%ED%95%98%EC%98%80%EC%9C%BC%EB%82%98-Ubuntu-reboot%ED%9B%84-%EC%84%9C%EB%B9%84%EC%8A%A4%EB%93%A4%EC%9D%B4-%EC%A0%95%EC%83%81%EC%A0%81%EC%9C%BC%EB%A1%9C-%EC%8B%9C%EC%9E%91%EB%90%98%EC%A7%80-%EC%95%8A%EC%9D%84-%EB%95%8C</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;pm2 startup을 수행하였으나 Ubuntu reboot후 서비스들이 정상적으로 시작되지 않을 때,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;/etc/systemd/system 디렉터리에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;pm2-*와 같이 pm2 관련 파일을 찾아서 vi 편집기로 열어서 사용자 부분을&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;User=root로 수정하고 reboot하면 서비스들이 정상적으로 올라옵니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Screen Shot 2022-11-22 at 7.20.50 PM.png&quot; data-origin-width=&quot;520&quot; data-origin-height=&quot;479&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/clwFW4/btrRTsKad4o/AfpQGYyO5cA2Yl3PKwa9T0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/clwFW4/btrRTsKad4o/AfpQGYyO5cA2Yl3PKwa9T0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/clwFW4/btrRTsKad4o/AfpQGYyO5cA2Yl3PKwa9T0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FclwFW4%2FbtrRTsKad4o%2FAfpQGYyO5cA2Yl3PKwa9T0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;520&quot; height=&quot;479&quot; data-filename=&quot;Screen Shot 2022-11-22 at 7.20.50 PM.png&quot; data-origin-width=&quot;520&quot; data-origin-height=&quot;479&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>배포</category>
      <category>Err-Handling</category>
      <category>PM2</category>
      <category>에러핸들링</category>
      <author>성장하는 코린이</author>
      <guid isPermaLink="true">https://mhp4718.tistory.com/366</guid>
      <comments>https://mhp4718.tistory.com/entry/%EB%B0%B0%ED%8F%AC-%EC%97%90%EB%9F%AC%ED%95%B8%EB%93%A4%EB%A7%81-pm2-startup%EC%9D%84-%EC%88%98%ED%96%89%ED%95%98%EC%98%80%EC%9C%BC%EB%82%98-Ubuntu-reboot%ED%9B%84-%EC%84%9C%EB%B9%84%EC%8A%A4%EB%93%A4%EC%9D%B4-%EC%A0%95%EC%83%81%EC%A0%81%EC%9C%BC%EB%A1%9C-%EC%8B%9C%EC%9E%91%EB%90%98%EC%A7%80-%EC%95%8A%EC%9D%84-%EB%95%8C#entry366comment</comments>
      <pubDate>Tue, 22 Nov 2022 19:21:54 +0900</pubDate>
    </item>
  </channel>
</rss>