どのようにDockerコンテナでDecker


このpost 当初はRAZINJ Dev

strapi 4はリリースされ、素晴らしいですが、Dockerのイメージはまだリリースされていません.そして、彼らが私たちのためにそれをリリースするとき、それは知られていません、しかし、これはDockerでstrapiを走らせることから私たちを止めません.
PS :ブログの最後にソースコードを見つけることができます.

目次

  • Requirements
  • Create the Strapi Project
  • Add Docker Support
  • Docker Support Caveat
  • Run and Verify Project
  • Content Types Development
  • Conclusion
  • 要件

  • NodeJs
  • Docker
  • Docker Compose
  • Strapiプロジェクトを作成する


    Strapiプロジェクトを作成する必要がありますapp (なぜこの名前を後で説明しますか)npx :
    npx create-strapi-app@latest app
    

    コマンドは以下のファイル構造を持つプロジェクトを生成します.

    Dockerサポートの追加


    今、私たちはDockerfile .
    このステップではDockerfile ファイルをstrapiプロジェクトのルートで作成する必要があります.
    FROM strapi/base
    
    # Let WatchTower know to ignore this container for checking
    LABEL com.centurylinklabs.watchtower.enable="false"
    
    WORKDIR /app
    
    COPY ./package*.json ./
    
    RUN npm ci
    
    COPY . .
    
    ENV NODE_ENV production
    
    RUN npm run build
    
    EXPOSE 1337
    
    CMD ["npm", "start"]
    
    
    The Dockerfile ストアドの依存関係をインストールし、プロジェクトを生産モードでビルドします1337 .
    これによって生成されるDockerイメージをさらに最適化するにはDockerfile コンテナ内で使用されないファイルやディレクトリをコピーしないようにします.
    ファイルやディレクトリを無視することは、.dockerignore 自然に似ている.gitignore ).
    プロジェクトのルートディレクトリのDocker無視ファイルを作成し、次のコンテンツをコピーします.
    node_modules
    license.txt
    exports
    *.cache
    build
    .strapi-updater.json
    
    これまでのところ、我々は我々のプロジェクトにDockerのサポートを追加しましたが、まだ行われていません.

    Dockerサポート


    strapiを使用しているときに警告がありますwebpack 管理するビューをビルドするにはnpm run build ).
    これを作るDockerfile 効果的に、我々はこのビルド依存を供給する必要がありますpackage.json ファイルをインストールするwebpack 開発依存:
    npm i -D webpack
    
    これで、今、我々はAを作成する必要がありますdocker-compose.yml ファイルは、strapiプロジェクトのルートディレクトリの外にある必要があります.
    だから、プロジェクトをラップする必要がありますdocker-compose.yml 私がプロジェクトを呼んだ理由app これを行いましょう:
    # Step out of the Strapi project named 'app'
    cd ..
    
    # Create a new directory
    mkdir strapi-v4
    
    # Move the Strapi project into the newly created directory
    mv app strapi-v4
    
    プロジェクトをディレクトリにラップした後、ディレクトリにステップし、docker-compose.yml ファイル
    # Step into the wrapper directory
    cd strapi-v4
    
    # Create an empty file
    touch docker-compose.yml
    
    さて、次のコンテンツをファイルに貼り付けます.
    version: "3"
    
    services:
      app:
        build:
          context: ./app
        container_name: strapi_v4_app
        restart: unless-stopped
        environment:
          NODE_ENV: production
          DATABASE_CLIENT: postgres
          DATABASE_HOST: db
          DATABASE_PORT: 5432
          DATABASE_NAME: app
          DATABASE_USERNAME: db_username
          DATABASE_PASSWORD: db_password
        volumes:
          - ./app:/srv/app
        ports:
          - 127.0.0.1:8000:1337
        depends_on:
          - db
    
      db:
        image: postgres:13
        container_name: strapi_v4_db
        restart: unless-stopped
        environment:
          POSTGRES_DB: app
          POSTGRES_USER: db_username
          POSTGRES_PASSWORD: db_password
        volumes:
          - ./data:/var/lib/postgresql/data
    
    あなたのためにファイルを説明させてください、Docker構成ファイルは2つのサービスを含みます;作成したstrapiプロジェクトapp (これは何でも名付けられます)、プロジェクトが接続するデータベースサービスです.

    プロジェクトの実行と確認


    さて、Dockerコンテナを作成し、CMSを楽しむことができます.
    ビルドと実行:
    docker-compose up -d --build
    
    両方のサービスが実行中であることを確認します.
    docker ps -a
    
    予想される出力は以下のようになります.

    終了したら、ブラウザに行って入ってください.http://localhost:8000/admin 管理者プロファイルを作成するには、基本的に、これはそれです.
    しかし、このビルドはビルドビルドですので、型を作成できません.開発環境でそれらを作成する必要があります.

    コンテンツタイプ開発


    この節では、どのようにコンテンツタイプを作成し、ビルド済みの環境を更新するかを確認します.
    最初にどのように動作するかを始めましょう.まず、UIから作成したコンテンツタイプがstrapiプロジェクトの内部にコード化されています.
    今では、開発環境を起動し、コンテンツタイプを作成し、生産ビルドを更新しましょう.
    まず、開発用のローカルデータベースを起動する必要がありますが、その前にデータベース用の拡張ファイルを作成してデータベースポートを公開します.
    右側のすぐ隣にdocker-compose.yml 新しいファイルを作成します
    touch docker-compose.dev.yml
    
    に以下の内容をペーストします.
    version: "3"
    
    services:
      db:
        ports:
          - 5432:5432
    
    では、両方のファイルを指定するだけでデータベースを起動します.
    # In the strapi-v4 directory
    docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d db
    
    データベースが作成されたことを確認し、指定したポートを公開します.
    docker ps -a
    
    第二に、プロジェクトのルートディレクトリ内からstrapiプロジェクトを起動する必要がありますnpm :
    # Get into the Strapi project directory
    cd app
    
    # Start development server
    npm run develop
    
    このように、プロジェクトはデータベースに接続されますdatabase.js ファイル.
    今すぐあなたのブラウザのヘッドを使用して管理パネルにhttp://localhost:1337/admin コンテンツタイプの作成を開始します.
    コンテンツタイプを作成するとすぐに、プロジェクトのディレクトリ内のコードが変更されます(いくつかのファイルが作成されます).
    我々はほとんど完了しました、我々は生産環境を更新しなければなりません(ローカルマシンのものではありません)、ちょうどこれがちょうど我々の前のコマンドを起動させるために:
    docker-compose up -d --build
    
    これは、生産環境を使用してプロジェクトを再構築し、CMSを使用して起動できます.

    結論


    このように、我々は我々が容易に我々のカスタムStrapi 4 Dockerイメージと容器を造ったと言うことができます.
    テンプレートとしてのブログソースコードGithub .
    いつものように、あなたは何かを学びました.
    この便利な発見?お友達とそれを共有すること自由に感じなさい.
    ニュースレターに加わってくださいhere 新しい投稿と更新を通知します.
    ポストのように?私たちを買うcoffee ❤️.