运行从nodejs创建的docker镜像时出错



我有以下问题(计算机的操作系统是安装了docker桌面的windows):

  • 我有一个项目在nodejs与express与节点版本12.8.0,这个项目在本地工作得很好,因为当运行命令:"npm run start"日志显示以下内容:
[nodemon] 2.0.20 [nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.* 
[nodemon] watching extensions:js,mjs,json 
[nodemon] starting `node server.js`  
Server up on port 8000
Conectado a la base de datos
  • 为了在同一台计算机上使用不同版本的node(14.15.1)运行另一个项目,在上述服务中创建了Dockerfile,其内容如下:
FROM node:12.8.0-alpine
LABEL Parking Back <carlos.jaramillo@tars.dev>
ENV TZ=America/Bogota
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
WORKDIR /BLOMIBACK
COPY ./package.json ./package.json
RUN npm install
RUN npm audit fix 
RUN npm install
RUN npm audit fix --force
RUN npm install
COPY ./ ./
CMD npm start
EXPOSE 8004
  • 为了构建镜像,运行命令:"docker build -t blomiback .">

  • 运行镜像,命令"docker run——name=blomiback1 -p 8004:8004 blomiback"是运行,它给了我以下消息,所以最终项目没有在docker中正确运行:

[nodemon] 2.0.20
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node server.js`
internal/modules/cjs/loader.js:909
return process.dlopen(module, path.toNamespacedPath(filename));

我希望你能帮助我,因为我真的不知道我做错了什么,也不知道我需要改进什么才能继续工作。

代码在下面的"dev"分支存储库:https://gitlab.com/storage20/parking/backend.git

项目的。env文件:

DB_CONNECT=mongodb://localhots:27017/alquimia_local
PORT=8000
CLIENT_ID_MQTT=blomiJavi DB_MYSQL=blomi_seeders DB_MYSQL_USER=root DB_MYSQL_PASSWORD= DB_MYSQL_HOST=localhost DB_MYSQL_PORT=3306
# DATOS PARA DUVA DUVA_URL=https://duvapi.tars.dev/ DUVA_FROM=noreply@brm.com.co DUVA_FROM_NAME=BRM S.A DUVA_EMAIL=natalia.rodriguez@tars.dev DUVA_PASSWORD=t@1234
#timezone TZ='America/Bogota'
# secret for encryption of jwt signature JWT_SECRET=123456789
# number of rounds for Blowfish algorithm for hashing user password BCRYPT_ROUNDS=12
# terminal TERMINAL_ID=1
# Custom token CUSTOM_TOKEN='CustomSecretToken'
# lifetime of the token (in seconds) JWT_LIFETIME=86400
# algorithm used in token signing JWT_ALGORITHM=HS256
#credentials Microsoft application
OUTLOOK_CLIENT_ID=eed698c9-3372-44af-9257-53b9adbd0e7c
OUTLOOK_CLIENT_SECRET=gud3-F0d1a8nc_pjkBUSUyF9R~j.09KAmU
OUTLOOK_CALLBACK_URL1=http://localhost:8004/api/user/message OUTLOOK_CALLBACK_URL=http://localhost:8080/auth/Outlook URL_BASE_SEND_EMAIL=http://localhost:8081 NODE_MAILER_EMAIL= carlos.jaramillo@tars.dev NODE_MAILER_PASSWORD= BosatzuKon1

我希望我可以在连接到数据库的docker容器中运行项目而没有问题

嗯,我做了和你一样的动作,但我有不同的错误

TypeError: OAuth2Strategy requires a clientID option

I tried ond219d3ceb62da0c7d5e1184b56f9c04d4245310d

您如何传递如下所示的配置数据?

passport.use(
"windowslive",
new OutlookStrategy(
{
clientID: process.env.OUTLOOK_CLIENT_ID,
clientSecret: process.env.OUTLOOK_CLIENT_SECRET,
callbackURL: process.env.OUTLOOK_CALLBACK_URL,
},

我没有在你的仓库里找到它。这里:https://learn.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-nodejs-webapp-msal文档说明您必须创建一个配置文件,在本例中是.env

编辑我添加了这行

require('dotenv').config()

放在中间件/passport.js之上,然后加上你的。env,它就开始工作了。我有一个关于连接到DB的错误,但这是明显的,因为我只尝试了一个容器。

最新更新