3 min read

Strapi Docker로 띄워보기

Strapi Docker로 띄워보기
Photo by Sigmund / Unsplash

Headless CMS

말 그대로 사용자에게 콘텐츠를컨텐츠를 보여주지 않고, 관리하는 시스템이다. 개발자 필요에 따라 여러 곳에서 불러서 사용할 수 있다.

여러 장점이 있는데 가장 좋게 볼 수 있는 것은 빠르게 편집하고, 개발에 유연하게 적용할 수 있는 점이다.

Headless CMS 선정

Strapi 를 사용하려고 한다. 일단 직접 구축 시 무료다. 집에 놀고 있는 NAS있으니 열심히 돌려보고, 느리면 다른 서버로 이동하면 되니까 나쁘지 않은 선택이라 생각했다.

Strapi

벌써 문제 발생

Docker로 환경을 구성하기 위해서 사용하려 하는데 뭔가 UI가 다른 느낌을 받았다. 알고보니 Strapi 에서는 Docker image를 v3버전까지만 올려두었다.

strapi_docker_image-1

그래 그럴 수 있다. 직접 구성하면 되는데 관련 사항은 해당 포스트에서 볼 수 있다.

간단하게 설명하자면 최신버전의 strapi를 이용하여 프로젝트를 생성하고, 해당 프로젝트를 docker image로 만드는 것이다.

프로젝트 생성

npx create-strapi-app@latest myproject --quickstart

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"]

Docker image 빌드

docker build -t strapi/strapi:latest .

⚠️ M1 맥으로 빌드를 진행하는경우

arm 아키텍처로 빌드하면 기존의 클라우드 서버에서 호환이 제대로 안 되기 때문에 빌드 시에 아키텍처를 확인하는 것이 좋다. amazons의amazone의 경우에는 AMD를amd를 사용하기 때문에 --platform linux/AMD 64amd64를 붙여서 빌드하면 된다.

docker build -t strapi/strapi:latest . --platform linux/amd64

필요하신분은 registry.lowapple.io/strapi:latest를 받으시면 됩니다.

docker-compose.yml

version: '3'

services:
  strapi:
    container_name: strapi
    image: registry.lowapple.io/strapi:latest
    environment:
      - DATABASE_CLIENT=postgres
      - DATABASE_HOST=db
      - DATABASE_PORT=55432
      - DATABASE_NAME=strapi
      - DATABASE_USERNAME=strapi
      - DATABASE_PASSWORD=strapi
    ports:
      - 1337:1337
    volumes:
      - ./app:/srv/app
    depends_on:
      - db
    links:
      - "db:db"
    networks:
      - strapi

  db:
    container_name: strapi-db
    image: postgres
    restart: always
    volumes:
      - ./db:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: strapi
      POSTGRES_PASSWORD: strapi
      POSTGRES_DB: strapi
    networks:
      - strapi
    ports:
      - 55432:5432

networks:
  strapi:
    name: strapi
    driver: bridge

docker-compose 를 이용하여 프로젝트를 시작하면

🎊 짠

strapi_build