我试图创建了一个Node.js的容器

首先

在使用容器创建Node.js后端服务器时,我选择了Node.js(node:10)作为基本映像,并创建了一个Dockerfile。然而,我无法附加到容器,并且不知道如何直接查看其中的配置等信息。
由于遇到麻烦时我想要能够查看Node.js的设置等内容,所以我尝试了在基于Ubuntu的映像上安装Node.js,并创建了一个Dockerfile。
(文章中提供了试运行的相关内容。)

执行环境(前提条件)

【Docker环境设置】
– 使用Ubuntu 20.04 LTS(在GCP上)
– 安装docker 19.03.13版本

我所做的这次的备忘录

为了这次工作创建一个测试文件夹,并将其移动到那里。

$ sudo mkdir ./test_container
$ cd ./test_container

创建Dockerfile

$ sudo nano ./Dockerfile
# ベースイメージ
FROM ubuntu:20.04

# 必要パッケージのインストール
RUN apt update
RUN apt install -y tzdata
RUN apt install -y \
  nodejs \
  npm

# Nodejs関連のパッケージインストール
RUN mkdir /usr/src/app
WORKDIR /usr/src/app
COPY ./package.json ./
RUN npm install

# index.jsファイルの設置
COPY ./index.js ./

# ポート開放
EXPOSE 8080

CMD ["node", "index.js"]

创建 package.json 文件用于安装 Node.js 模块。
在 npm install 的时候,根据 package.json 的信息进行安装。

$ sudo nano ./package.json
{
  "name": "test",
  "description": "test",
  "version": "0.0.1",
  "main": "index.js",
  "private": true,
  "license": "Apache Version 2.0",
  "author": "Google Inc.",
  "engines": {
    "node": "10"
  },

  "dependencies": {
    "express": "^4.17.1",
    "moment-timezone": "^0.5.31",
    "body-parser": "^1.19.0"
  }
}

创建一个index.js文件

$ sudo nano ./index.js
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const port = 8080;


app.use(bodyParser.urlencoded({ extended: true }));

app.get('/get_test1', function(req, res) {
  res.send('GET1パラメータ取得: ' + req.query.get1)
});

app.get('/get_test2', function(req, res) {
  res.send('GET2パラメータ取得: ' + req.query.get2)
});

app.post('/post_test1', function(req, res) {
  res.send('POST-URLへの送信です。')
});

app.post('/post_test2', function(req, res) {
  res.send('POSTパラメータ取得: ' + req.body.data1)
});

app.listen(port)

执行构建

$ docker image build -t test_container:v1 ./

创建并启动容器

$ docker container run -it -d -p 80:8080 --name con1 test_container:v1

确认动作

确认GET请求的动作。连接以下链接并返回已设置的响应即可。

外部IP/get_test1?get1=10
外部IP/get_test2?get2=20

外部IP/get_test1?get1=10
外部IP/get_test2?get2=20

确认 POST 的动作
在本地环境(个人电脑)上创建一个适当的 html 文件,并在浏览器中打开并访问它。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>POSTテスト用</title>
</head>

<body>

<form action="http://[外部IP]/post_tset" method="post">
  <input type="hidden" name="data1" value="aiueo">
  <input type="submit" value="送信">
</form>

</body>
</html>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>POSTテスト用</title>
</head>

<body>

<form action="http://[外部IP]/post_tset2" method="post">
  <input type="hidden" name="data1" value="aiueo">
  <input type="submit" value="送信">
</form>

</body>
</html>

附赠

在最初的背景部分中,提到了「无法附加到容器,并且不知道如何直接查看容器内的配置」,但实际上只是在创建容器时,没有成功地用/bin/bash命令覆盖了[CMD]命令。

广告
将在 10 秒后关闭
bannerAds