본문 바로가기
IT일반/Strapi

백엔드 strapi v4 도커로 생성

by xavi2019 2022. 3. 17.

글작성일: 2022/03/17

 

백엔드 api 생성을 위해, 먼저 MySQL을 설치후 아래 사항을 진행합니다.

요구 사항

  • 미리 설치된 MySQL 서버
  • 도커
  • NPM / Yarn (Yarn 권장) (Node 14가 권장되지만 로컬 개발을 위해 Yarn을 사용하는 경우 16이 작동함)
  • 좋아하는 코드 편집기. (저는 VSCode를 사용하겠습니다)

strapi 프로젝트 생성

npx로 프로젝트를 생성합니다.

npx create-strapi-app@latest tera-blog-strapi

 

아래와 같이 Custom 선택합니다.

? Choose your installation type
  Quickstart (recommended)
❯ Custom (manual settings)

 

mysql 선택

 

미리 설치한 DB 접속정보 입력

 

디렉토리로 이동하여 에디터를 엽니다.

cd tera-blog-strapi && code .

 

도커로 변환

 

Dockerfile 생성

FROM node:16
# Installing libvips-dev for sharp compatability
RUN apt-get update -y && \
apt-get upgrade -y libvips libvips-dev
ARG NODE_ENV=development
ENV NODE_ENV=${NODE_ENV}
WORKDIR /opt/
COPY ./package.json ./
COPY ./yarn.lock ./
ENV PATH /opt/node_modules/.bin:$PATH
RUN yarn config set network-timeout 600000 -g
RUN yarn install
WORKDIR /opt/app
COPY ./ .
RUN yarn build
EXPOSE 1337
CMD ["yarn", "develop"]

 

 

.dockerignore 파일 생성

.tmp/
.cache/
.git/
build/
node_modules/
data/

 

 

도커 이미지 생성 (도커 허브 아이디 이용)

docker build -t {도커허브ID}/tera-blog-strapi:latest .

도커 이미지 확인

 

 

도커 컴포즈 파일로 컨테이너 생성

docker-compose.yml 생성

version: "3"
services:
  strapi:
    container_name: tera-blog-strapi
    build: .
    image: {도커허브ID}/tera-blog-strapi:latest
    restart: unless-stopped
    env_file: .env
    environment:
      DATABASE_CLIENT: ${DATABASE_CLIENT}
      DATABASE_HOST: ${DATABASE_HOST}
      DATABASE_NAME: ${DATABASE_NAME}
      DATABASE_USERNAME: ${DATABASE_USERNAME}
      DATABASE_PORT: ${DATABASE_PORT}
      JWT_SECRET: ${JWT_SECRET}
      DATABASE_PASSWORD: ${DATABASE_PASSWORD}
      NODE_ENV: ${NODE_ENV}
    volumes:
      - ./config:/opt/app/config
      - ./src:/opt/app/src
      - ./package.json:/opt/package.json
      - ./yarn.lock:/opt/yarn.lock
      - ./.env:/opt/app/.env
    ports:
      - "3337:1337"

 

.env 파일 생성

DATABASE_CLIENT=mysql
DATABASE_HOST=IP주소
DATABASE_PORT=3306
DATABASE_NAME=DB이름
DATABASE_USERNAME=사용자이름
DATABASE_PASSWORD=비번
NODE_ENV=development

 

도커 컨테이너 실행

docker-compose up --build

 

 

strapi 접속

http://localhost:3337/admin

 

strapi 버전 확인

 

DB확인

팁) 도커 허브로 push 하면 로컬에 이미지가 없어도 설치 가능

댓글