Strapi Docker로 띄워보기
Headless CMS
말 그대로 사용자에게 콘텐츠를컨텐츠를 보여주지 않고, 관리하는 시스템이다. 개발자 필요에 따라 여러 곳에서 불러서 사용할 수 있다.
여러 장점이 있는데 가장 좋게 볼 수 있는 것은 빠르게 편집하고, 개발에 유연하게 적용할 수 있는 점이다.
Headless CMS 선정
Strapi 를 사용하려고 한다. 일단 직접 구축 시 무료다. 집에 놀고 있는 NAS있으니 열심히 돌려보고, 느리면 다른 서버로 이동하면 되니까 나쁘지 않은 선택이라 생각했다.
벌써 문제 발생
Docker로 환경을 구성하기 위해서 사용하려 하는데 뭔가 UI가 다른 느낌을 받았다. 알고보니 Strapi 에서는 Docker image를 v3버전까지만 올려두었다.
그래 그럴 수 있다. 직접 구성하면 되는데 관련 사항은 해당 포스트에서 볼 수 있다.
간단하게 설명하자면 최신버전의 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 를 이용하여 프로젝트를 시작하면