如何在EC2容器内运行Docker映像?

3

我有一个EC2实例,其中包含以下docker镜像:

REPOSITORY       TAG      IMAGE ID
grant/docker-app hookedup b99f4ad

在我的本地机器上,我一直在使用docker-compose builddocker-compose up来启动服务器。
我该如何在EC2实例上运行镜像?
我使用Amazon Linux AMI登录AWS。我已经在其中安装了docker和docker-compose。我可以看到镜像,但不知道如何启动它。
Docker仓库在hub.docker.com上。我从那里拉取了它。
我尝试过:
docker run -d -p 5000:5000 grant/docker-app:hookedup

这段代码输出了一些字符串:cdf4c4035e0...30b4d0881d635ecdac6f3

我还尝试过:

docker-compose build grant/docker-app:hookedup

这段文本的含义是:在当前目录或其它目录下找不到合适的配置文件。

我还尝试了其他方法:

docker run --rm -p 3000:3000 grantspilsbury/docker-app:hookedup

这将产生以下输出:

> docker-sample-app@0.1.0 start /usr/src/app
> react-scripts start

Could not find a required file.
  Name: index.html
  Searched in: /usr/src/app/public
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! docker-sample-app@0.1.0 start: `react-scripts start`
npm ERR! Exit status 1

如果我运行docker ps或docker ps -a,我会得到以下输出:
[ec2-user@ip-172...-26 ~]$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[ec2-user@ip-172...-26 ~]$ docker ps -a
CONTAINER ID        IMAGE                                       COMMAND             CREATED             STATUS                         PORTS               NAMES
0ca69ff467bc        grant/docker-app:hookedup   "npm start"         24 minutes ago      Exited (1) 24 minutes ago                          happy_archimedes
2a01050f3bb6        grant/docker-app:hookedup   "npm start"         About an hour ago   Exited (1) About an hour ago                       wonderful_rosalind

如果我运行命令docker logs 0ca69ff467bc,将会输出以下内容:
Could not find a required file.
  Name: index.html
  Searched in: /usr/src/app/public
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! docker-sample-app@0.1.0 start: `react-scripts start`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the docker-sample-app@0.1.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2018-01-27T03_35_55_030Z-debug.log

你考虑过使用 AWS弹性容器服务 来为你管理容器启动吗? - MrDuk
请注意,运行 run -d 是在分离模式下运行 - 您看到的字符串是该容器的唯一标识符。如果您执行 docker ps(或 docker ps -a 以查看正在运行和停止的容器),您是否看到任何内容? - MrDuk
@MrDuk 谢谢。我已经添加了 docker ps -a 日志到问题中。现在我正在研究 ECS。又是一个兔子洞。 - grabury
请问您可以发布 docker logs 0ca69ff467bc 的输出吗? - MrDuk
@MrDuk 我已经添加了docker日志的输出。 - grabury
1个回答

0

你的容器内存在一个Node.js问题。运行以下命令:

docker run -it --rm -p 3000:3000 --entrypoint sh grantspilsbury/docker-app:hookedup

检查一下容器内部的内容,特别是/usr/src/app/public。或者,与您的开发人员一起工作。

我认为您在容器中有一个nodejs react应用程序。在WORKDIR中,有package.json。然而,找不到index.html表明并没有将所有文件复制到镜像中,或者应用程序正在错误的路径中搜索。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接