Spaces:
Build error
Build error
# ベースイメージとして Node.js を使用 | |
FROM node:18 | |
# 作業ディレクトリを設定 | |
WORKDIR /app | |
# ホストのファイルをコンテナにコピー | |
COPY . . | |
# translations ディレクトリを作成し、権限を設定 | |
RUN mkdir -p /app/translations && chmod -R 777 /app/translations | |
RUN chmod -R 777 /app | |
# 依存関係をインストール(競合を無視) | |
RUN npm install --legacy-peer-deps | |
# OpenSSL の互換オプションを有効化 | |
ENV NODE_OPTIONS="--openssl-legacy-provider" | |
RUN LF=$(printf '\\\012_') && \ | |
LF=${LF%_} && \ | |
EXTENSION_NAME=ML2Scratch && \ | |
EXTENSION_ID=ml2scratch && \ | |
COLLABORATOR=champierre && \ | |
EXTENSION_DESCRIPTION="ML2Scratch Blocks." && \ | |
cd node_modules/scratch-vm && \ | |
npm install ml5@0.12.2 && \ | |
cd ../../ && \ | |
mkdir -p node_modules/scratch-vm/src/extensions/scratch3_${EXTENSION_ID} && \ | |
cp ${EXTENSION_ID}/scratch-vm/src/extensions/scratch3_${EXTENSION_ID}/index.js node_modules/scratch-vm/src/extensions/scratch3_${EXTENSION_ID}/ && \ | |
mv node_modules/scratch-vm/src/extension-support/extension-manager.js node_modules/scratch-vm/src/extension-support/extension-manager.js_orig && \ | |
node_modules/scratch-vm/src/extension-support/extension-manager.js_orig \ | |
node_modules/scratch-vm/src/extension-support/extension-manager.js && \ | |
mkdir -p src/lib/libraries/extensions/${EXTENSION_ID} && \ | |
cp ${EXTENSION_ID}/scratch-gui/src/lib/libraries/extensions/${EXTENSION_ID}/${EXTENSION_ID}.png src/lib/libraries/extensions/${EXTENSION_ID}/ && \ | |
cp ${EXTENSION_ID}/scratch-gui/src/lib/libraries/extensions/${EXTENSION_ID}/${EXTENSION_ID}-small.png src/lib/libraries/extensions/${EXTENSION_ID}/ && \ | |
mv src/lib/libraries/extensions/index.jsx src/lib/libraries/extensions/index.jsx_orig && \ | |
DESCRIPTION="\ | |
{${LF}\ | |
name: '${EXTENSION_NAME}',${LF}\ | |
extensionId: '${EXTENSION_ID}',${LF}\ | |
collaborator: '${COLLABORATOR}',${LF}\ | |
iconURL: ${EXTENSION_ID}IconURL,${LF}\ | |
insetIconURL: ${EXTENSION_ID}InsetIconURL,${LF}\ | |
description: (${LF}\ | |
<FormattedMessage${LF}\ | |
defaultMessage='${EXTENSION_DESCRIPTION}'${LF}\ | |
description='${EXTENSION_DESCRIPTION}'${LF}\ | |
id='gui.extension.${EXTENSION_ID}blocks.description'${LF}\ | |
/>${LF}\ | |
),${LF}\ | |
featured: true,${LF}\ | |
disabled: false,${LF}\ | |
internetConnectionRequired: true,${LF}\ | |
bluetoothRequired: false${LF}\ | |
}," && \ | |
sed -e "s|^export default \[$|import ${EXTENSION_ID}IconURL from './${EXTENSION_ID}/${EXTENSION_ID}.png';${LF}import ${EXTENSION_ID}InsetIconURL from './ml2scratch/ml2scratch-small.png';${LF}${LF}export default [${LF}${DESCRIPTION}|g" \ | |
src/lib/libraries/extensions/index.jsx_orig > src/lib/libraries/extensions/index.jsx | |
# コンテナの起動時にサーバーを実行 | |
CMD ["npm", "start"] | |
# コンテナがリッスンするポート | |
EXPOSE 3000 | |