File size: 3,022 Bytes
4b3a3d6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4680880
 
 
 
 
 
 
 
 
 
 
 
50a3b00
4680880
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4b3a3d6
 
 
 
 
 
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# ベースイメージとして 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