Javascript 编写正确的Dockerfile
我使用Javascript(带有D3.js)、JQuery、CSS创建了一个应用程序,但没有使用Node.js。这是典型的“index.html”浏览器运行界面。我一直在阅读Docker教程,并试图找出如何将我的应用程序设置为服务器,但我没有运气完成它,只能找到使用带有Node的应用程序的教程。就我的一生而言,我无法找出我做错了什么,但我想知道问题(或其中之一)是否在我的Dockerfile中。此外,我是否需要使用Node.js才能使所有这些都正常工作?我的应用程序由以下部分组成: 一个名为竞技场任务的目录。在这个目录中,我有index.html、名为arena.js的主javascript文件和CSS文件。我的其他必要文件(如图像等)位于同一目录下名为data和scripts的另外两个文件夹中 那么现在,我该如何编写Dockerfile,以便使用Docker构建它并将其发布到服务器?我尝试了以下Docker的示例Dockerfile:Javascript 编写正确的Dockerfile,javascript,docker,server,dockerfile,docker-toolbox,Javascript,Docker,Server,Dockerfile,Docker Toolbox,我使用Javascript(带有D3.js)、JQuery、CSS创建了一个应用程序,但没有使用Node.js。这是典型的“index.html”浏览器运行界面。我一直在阅读Docker教程,并试图找出如何将我的应用程序设置为服务器,但我没有运气完成它,只能找到使用带有Node的应用程序的教程。就我的一生而言,我无法找出我做错了什么,但我想知道问题(或其中之一)是否在我的Dockerfile中。此外,我是否需要使用Node.js才能使所有这些都正常工作?我的应用程序由以下部分组成: 一个名为竞技
FROM node:current-slim
WORKDIR /usr/src/app
COPY package.json .
RUN npm install
EXPOSE 8080
CMD [ "npm", "start" ]
COPY . .
但老实说,我不太确定如何进行更改以适应我的计划。我不知道是否需要package.json,因为如果需要,那么我不需要使用Node吗?我不在我的应用程序中使用任何节点模块或项目依赖项。我需要吗?我的问题不仅仅是一个不正确的Dockerfile吗
很抱歉,这个问题到处都是,但我对服务器端领域还真的很陌生。谢谢你的帮助!如果我能提供任何澄清,请告诉我。让我们澄清几件事:
node和npm是您需要它们的时候,就像您正在使用一些npm包一样。
package.json
-由npm使用-它在其中存储已安装的包列表
对于你的情况,我不认为需要节点。所以你可以创建一个简单的图像,然后你需要一个简单的web服务器,它可以通过http为你的web请求提供html/css/js文件。我知道最简单的是nginx
在Dockerfile中,您还需要将所有资源复制到正在构建的映像中。
这就是COPY package.json.
所做的。但在您的情况下,您必须将整个app
文件夹复制到docker图像中的某个app
文件夹中。(假设应用程序是一个包含所有文件的文件夹)
所以我们要有步骤
nginx default
是nginx用作web服务器的配置:server {
listen 8080;
server_name localhost;
root /app
}
nginx非常灵活-如果您需要从中获得一些东西,请使用googleit
exit_script() {
trap - SIGINT SIGTERM # clear the trap
sudo service nginx stop
exit 1
}
sudo service nginx start
while sleep 20; do
CURRENT_TIME=$(date +"%T")
echo "app is running: $CURRENT_TIME"
done
exit_script
-是一个陷阱,有助于快速停止docker映像,但与terminate不同。但出于测试的目的,您可以忽略这一点
docker build-t{your image name}.
)并使用如下方式启动映像:
docker run-p8080:8080{your image name}bash/startup.sh
package.json
-由npm使用-它在其中存储已安装的包列表
对于你的情况,我不认为需要节点。所以你可以创建一个简单的图像,然后你需要一个简单的web服务器,它可以通过http为你的web请求提供html/css/js文件。我知道最简单的是nginx
在Dockerfile中,您还需要将所有资源复制到正在构建的映像中。
这就是COPY package.json.
所做的。但在您的情况下,您必须将整个app
文件夹复制到docker图像中的某个app
文件夹中。(假设应用程序是一个包含所有文件的文件夹)
所以我们要有步骤
nginx default
是nginx用作web服务器的配置:server {
listen 8080;
server_name localhost;
root /app
}
nginx非常灵活-如果您需要从中获得一些东西,请使用googleit
exit_script() {
trap - SIGINT SIGTERM # clear the trap
sudo service nginx stop
exit 1
}
sudo service nginx start
while sleep 20; do
CURRENT_TIME=$(date +"%T")
echo "app is running: $CURRENT_TIME"
done
exit_script
-是一个陷阱,有助于快速停止docker映像,但与terminate不同。但出于测试的目的,您可以忽略这一点
docker build-t{your image name}.
)并使用如下方式启动映像:
docker run-p8080:8080{your image name}bash/startup.sh
这应该行得通:),不过很可能你会遇到一些错误,因为我是从头开始写的。(就像你可能需要nginx的其他东西,或者默认情况下ubuntu最新映像中没有安装sudo)。你是部署一个节点服务器还是一个静态网站?如果你所有的资产都是静态的,不需要编译,我想你可以只使用
apache
或nginx
映像。@see Sharper yep,非常清楚。每个用户都将看到同一事物的变化(例如,来自同一组图像的随机图片),并能够以相同的方式与之交互。您是部署节点服务器还是仅部署静态网站?如果您的所有资产都是静态的,并且不需要