1.在服务器内下载项目
https://github.com/triggerdotdev/jsonhero-web.git
2.进入项目根目录创建dockerfile文件
并在dockerfile中写入以下内容
# 设置工作目录
WORKDIR /app
# 复制 package.json 和 package-lock.json
COPY package*.json ./
# 使用淘宝 npm 镜像源
RUN npm config set registry https://registry.npmmirror.com
# 安装项目依赖
RUN npm install
# 复制整个项目到工作目录
COPY . .
# 构建项目
RUN npm run build
# 暴露服务端口
EXPOSE 3000
# 启动项目
CMD ["npm", "start"]
3.构建docker镜像
docker build -t jsonhero-web .
4.创建docker-compose文件
version: '3'
services:
jsonhero:
image: jsonhero
ports:
- "8787:8787"
volumes:
- /opt/json-hero/jsonhero-web/.env:/app/.env
docker-compose -f /opt/dockerCompose/jsonhero.yml up -d
附录:出现错误
[root@VM-16-12-centos jsonhero-web]# docker build -t jsonhero-web .
[+] Building 3.6s (2/2) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.4s
=> => transferring dockerfile: 372B 0.2s
=> ERROR [internal] load metadata for docker.io/library/node:16-alpine 3.0s
------
> [internal] load metadata for docker.io/library/node:16-alpine:
------
Dockerfile:2
--------------------
1 | #使用node.js 官方镜像
2 | >>> FROM node:16-alpine
3 |
4 | # 设置工作目录
--------------------
ERROR: failed to solve: node:16-alpine: failed to resolve source metadata for docker.io/library/node:16-alpine: failed to copy: httpReadSeeker: failed open: failed to do request: Get "https://mirror.ccs.tencentyun.com/v2/library/node/blobs/sha256:2573171e0124bb95d14d128728a52a97bb917ef45d7c4fa8cfe76bc44aa78b73?ns=docker.io": dial tcp: lookup mirror.ccs.tencentyun.com on 100.125.1.250:53: no such host
问题原因:docker仓库问题,需修改或添加仓库地址
1.vim /etc/docker/daemon.json
2.
{
"registry-mirrors": [
"https://registry.cn-hangzhou.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
3.systemctl daemon-reload
4.systemctl restart docker
[root@VM-16-12-centos jsonhero-web]# docker logs 16f71c37bc3d
> start
> concurrently "npm run dev" "npm run start:worker"
[0]
[0] > dev
[0] > concurrently "npm run dev:css" "npm run dev:search" "remix watch"
[0]
[1]
[1] > start:worker
[1] > miniflare --env .env --build-command "npm run dev:worker" --watch
[1]
[0] [2] Watching Remix app in development mode...
[0] [1]
[0] [1] > dev:search
[0] [1] > esbuild ./app/entry.worker.ts --outfile=./public/entry.worker.js --bundle --format=esm --define:process.env.NODE_ENV='"development"' --watch
[0] [1]
[0] [0]
[0] [0] > dev:css
[0] [0] > tailwindcss -i ./styles/tailwind.css -o ./app/tailwind.css --watch
[0] [0]
[0] [1] [watch] build finished, watching for changes...
[1]
[1] > dev:worker
[1] > esbuild --define:process.env.NODE_ENV='"development"' --bundle --sourcemap --outdir=dist ./worker
[1]
[1]
[1] dist/worker.js 2.3mb ⚠️
[1] dist/worker.js.map 3.4mb
[1]
[1] ⚡ Done in 295ms
[1] [mf:inf] Build succeeded
[0] [0] Browserslist: caniuse-lite is outdated. Please run:
[0] [0] npx browserslist@latest --update-db
[0] [0] Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
[0] [0]
[0] [0] warn - The `@variants` directive has been deprecated in Tailwind CSS v3.0.
[0] [0] warn - Use `@layer utilities` or `@layer components` instead.
[0] [0] warn - https://tailwindcss.com/docs/upgrade-guide#replace-variants-with-layer
[0] [0]
[0] [0] Rebuilding...
[1] [mf:err] /app/dist/worker.js:24027
[1] var q2e = SESSION_SECRET;
[1] ^
[1]
[1] ReferenceError: SESSION_SECRET is not defined
[1] at /app/build/index.js:67:317
[1] at /app/dist/worker.js:52917:3
[1] at Script.runInContext (node:vm:141:12)
[1] at VMScriptRunner.runAsScript (/app/node_modules/@miniflare/runner-vm/src/index.ts:25:12)
[1] at VMScriptRunner.run (/app/node_modules/@miniflare/runner-vm/src/index.ts:84:12)
[1] at EventTarget.#reload (/app/node_modules/@miniflare/core/src/index.ts:775:42)
[1] at EventTarget.getPlugins (/app/node_modules/@miniflare/core/src/index.ts:1017:5)
[1] at createServer (/app/node_modules/@miniflare/http-server/src/index.ts:369:19)
[1] at startServer (/app/node_modules/@miniflare/http-server/src/index.ts:476:18)
[1] at main (/app/node_modules/miniflare/src/cli.ts:111:7)
[1] [mf:err] Unhandled Promise Rejection: /app/dist/worker.js:24027
[1] var q2e = SESSION_SECRET;
[1] ^
[1]
[1] ReferenceError: SESSION_SECRET is not defined
[1] at /app/build/index.js:67:317
[1] at /app/dist/worker.js:52917:3
[1] at Script.runInContext (node:vm:141:12)
[1] at VMScriptRunner.runAsScript (/app/node_modules/@miniflare/runner-vm/src/index.ts:25:12)
[1] at VMScriptRunner.run (/app/node_modules/@miniflare/runner-vm/src/index.ts:84:12)
[1] at EventTarget.#reload (/app/node_modules/@miniflare/core/src/index.ts:775:42)
[1] at EventTarget.getPlugins (/app/node_modules/@miniflare/core/src/index.ts:1017:5)
[1] at createServer (/app/node_modules/@miniflare/http-server/src/index.ts:369:19)
[1] at startServer (/app/node_modules/@miniflare/http-server/src/index.ts:476:18)
[1] at main (/app/node_modules/miniflare/src/cli.ts:111:7)
[0] [0] Done in 971ms.
[1] [mf:inf] Updated `Request.cf` object cache!
[1] npm run start:worker exited with code 1
[0] [2] 💿 Built in 2.2s
[root@VM-16-12-centos jsonhero-web]#
试了几个方法都不行
1.在dockerfile 中显示的复制.env文件
2.使用映射 将外部的.env文件映射到内部去
没事了,我的.env 文件中的变量写错了。