使用 Docker 在 amazonlinux 上创建一个 nodejs 环境

Dockerfile的编写方式

Note: Since the requested text is already in Chinese, I will attempt to provide a more natural or equivalent paraphrase.

借鉴这篇文章

使用 Amazon Linux 镜像创建一个容器。

为了尽可能在与EC2相同的环境中工作,我们将使用amazonlinux进行环境搭建。

ローカルの作業ディレクトリ> docker run -it amazonlinux
Unable to find image 'amazonlinux:latest' locally
latest: Pulling from library/amazonlinux
85ee02fe1a09: Pull complete
Digest: sha256:2e42b5d170dbb6d54d35b3b64627480de9687b52cfbab2086267a0fd2acd7bef
Status: Downloaded newer image for amazonlinux:latest
bash-4.2# ls -lta
total 60
drwxr-xr-x   5 root root  360 Jul  3 11:32 dev
dr-xr-xr-x  13 root root    0 Jul  3 11:32 sys
dr-xr-xr-x 168 root root    0 Jul  3 11:32 proc
drwxr-xr-x   1 root root 4096 Jul  3 11:32 .
drwxr-xr-x   1 root root 4096 Jul  3 11:32 ..
-rwxr-xr-x   1 root root    0 Jul  3 11:32 .dockerenv
drwxr-xr-x   1 root root 4096 Jul  3 11:32 etc
drwxr-xr-x   2 root root 4096 Jun 17 01:48 run
drwxr-xr-x  18 root root 4096 Jun 17 01:48 var
lrwxrwxrwx   1 root root    7 Jun 17 01:48 bin -> usr/bin
lrwxrwxrwx   1 root root    7 Jun 17 01:48 lib -> usr/lib
lrwxrwxrwx   1 root root    9 Jun 17 01:48 lib64 -> usr/lib64
lrwxrwxrwx   1 root root    8 Jun 17 01:48 sbin -> usr/sbin
drwxr-xr-x  13 root root 4096 Jun 17 01:48 usr
drwxr-xr-x   2 root root 4096 Jun 17 01:48 local
drwxrwxrwt   2 root root 4096 Jun 17 01:48 tmp
dr-xr-xr-x   2 root root 4096 Apr  9  2019 boot
drwxr-xr-x   2 root root 4096 Apr  9  2019 home
drwxr-xr-x   2 root root 4096 Apr  9  2019 media
drwxr-xr-x   2 root root 4096 Apr  9  2019 mnt
drwxr-xr-x   2 root root 4096 Apr  9  2019 opt
dr-xr-x---   2 root root 4096 Apr  9  2019 root
drwxr-xr-x   2 root root 4096 Apr  9  2019 srv

应该可以顺利使用Amazon Linux镜像启动容器。

安装Node.js

暂时执行以下命令

yum update -y
~省略~
Complete!

进行Node.js的安装

bash-4.2# yum install nodejs npm
Loaded plugins: ovl, priorities
No package nodejs available.
No package npm available.
Error: Nothing to do

通常情况下,似乎无法在yum上安装Node.js,根据官方提供的指南进行了Amazon Linux上的操作实践。

bash-4.2# curl -fsSL https://rpm.nodesource.com/setup_16.x | bash -

## Installing the NodeSource Node.js 16.x repo...


## Inspecting system...

+ rpm -q --whatprovides redhat-release || rpm -q --whatprovides centos-release || rpm -q --whatprovides cloudlinux-release || rpm -q --whatprovides sl-release || rpm -q --whatprovides fedora-release
+ uname -m

## Confirming "el7-x86_64" is supported...

+ curl -sLf -o /dev/null 'https://rpm.nodesource.com/pub_16.x/el/7/x86_64/nodesource-release-el7-1.noarch.rpm'

## Downloading release setup RPM...

+ mktemp
+ curl -sL -o '/tmp/tmp.z8z9Q1v7OL' 'https://rpm.nodesource.com/pub_16.x/el/7/x86_64/nodesource-release-el7-1.noarch.rpm'

## Installing release setup RPM...

+ rpm -i --nosignature --force '/tmp/tmp.z8z9Q1v7OL'

## Cleaning up...

+ rm -f '/tmp/tmp.z8z9Q1v7OL'

## Checking for existing installations...

+ rpm -qa 'node|npm' | grep -v nodesource

## Run `sudo yum install -y nodejs` to install Node.js 16.x and npm.
## You may also need development tools to build native addons:
     sudo yum install gcc-c++ make
## To install the Yarn package manager, run:
     curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
     sudo yum install yarn

通过添加NodeSource的存储库,可以使其可执行。

请参考这篇文章

在中国的华语中,可以将”nodejsのインストール作業”的短语翻译为”Node.js 的安装步骤”。

bash-4.2# yum install -y nodejs
~省略~
Installed:
  nodejs.x86_64 2:16.4.1-1nodesource

Complete!
bash-4.2# node -v
v16.4.1

将其整合至Dockerfile中

创建一个使用Express的环境并进行确认。

FROM amazonlinux

WORKDIR /usr/src/app

RUN yum update -y && \
    curl -fsSL https://rpm.nodesource.com/setup_16.x | bash && \
    yum install -y nodejs && \
    # Expressの環境構築
    cd /usr/src/app && \
    npm init -y  && \
    npm install express --save

COPY . .

EXPOSE 8080
CMD [ "node", "server.js" ]
bannerAds