- Dockerfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# Stage 1: Build stage FROM node:18.18-alpine AS builder ENV APP_ROOT /var/www/app WORKDIR $APP_ROOT # Install necessary packages RUN apk update && \ apk upgrade && \ apk add --update --no-cache \ bash \ tzdata \ vim # Copy application files COPY package.json yarn.lock ./ RUN yarn install COPY . . # Stage 2: Development stage FROM node:18.18-alpine ENV APP_ROOT /var/www/app WORKDIR $APP_ROOT # Install necessary packages RUN apk update && \ apk upgrade && \ apk add --update --no-cache \ bash \ tzdata \ vim # Copy build artifacts from builder stage COPY --from=builder $APP_ROOT $APP_ROOT EXPOSE 3000 CMD ["yarn", "dev"] |
- Error
1 2 3 4 5 6 |
$ docker logs 5xxxxxxxxx yarn run v1.22.19 $ next dev /bin/sh: next: not found error Command failed with exit code 127. info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. |
docker-composeでリポジトリ配下をマウントした状態かつ、Dockerfileにyarn installと記載された状態で実行するとnode_modules配下が消えてコンテナが起動しなくなってしまう。動作的にはbuild中にコンテナ内にyarn installでnode_modules配下にインストールされるが、完了時にリポジトリ配下をマウントして上書きされてしまうので、削除される流れとなる。対応策としては以下。
- 新たなvolumeを作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
services: hoge-nginx: container_name: hoge-nginx build: ./nginx/ image: hoge-nginx ports: - '8080:80' volumes: - ~/www/hoge:/var/www/app:delegated tty: true depends_on: - hoge-app hoge-app: container_name: hoge-app build: context: ../../ dockerfile: docker/dev/app/Dockerfile image: hoge-app ports: - '3000:3000' volumes: - ~/www/hoge:/var/www/app:delegated - node_modules:/var/www/app/node_modules tty: true hoge-db: container_name: hoge-db build: ./postgresql/ restart: always ports: - "5432:5432" volumes: - ./postgresql/data:/var/lib/postgresql/data environment: POSTGRES_DB: "hoge" POSTGRES_USER: "root" POSTGRES_PASSWORD: "rootpw" volumes: node_modules: |
volumeを指定することで、マウントよりvolumeが優先されるので削除されることはないが、フロントの修正がある場合はコンテナ内でyarn installする必要がある。
Was this helpful?
0 / 0
1989年生まれのFindy/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTA/TechBullで未経験者にインフラのコーチング/コミュニティマネージャーとして立ち上げと運営をしている。また、過去「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。