Бинарный файл run.sh через 'revel build <testapp>' не работает внутри контейнера докеров

Поскольку я недавно начал использовать фреймворк revel для создания веб-приложения Go. Я создал тестовое приложение (orpat), скомпилировал его «revel build orpat prod» и изменил conf PORT-> 8084 для публикации приложения. Сгенерированные файлы -

  1. orpat (исполняемый файл 11 МБ)
  2. run.sh
  3. run.bat
  4. src / папка

Он хорошо работает в моей локальной системе из другого места (конечно, у него установлен golang и revel). http: // локальный: 8084

Я скопировал файлы сборки на виртуальную машину без установленного golang, он также выполняется там ./run.sh: запустите этот cmd в терминале, чтобы вывести приложение в сеть.

Ниже dockerfile->

FROM golang:1.10.4-alpine3.8

RUN apk --no-cache add ca-certificates
RUN apk add --no-cache bash

COPY . /go/src/orpat

WORKDIR /go/src

EXPOSE 8084/tcp

RUN chmod -vR 777 /go/src/orpat

CMD [ "bash", "run.sh" ]

Создание образа с помощью docker build -t orpat. работает нормально.

a@kc:~/docker/orpat$ sudo docker build -t orpat .
Sending build context to Docker daemon  12.02MB
Step 1/8 : FROM golang:1.10.4-alpine3.8
 ---> 20834f40149c
Step 2/8 : RUN apk --no-cache add ca-certificates
 ---> Running in 154c0f3024f1
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz
OK: 5 MiB in 14 packages
Removing intermediate container 154c0f3024f1
 ---> 50d5c49f8eee
Step 3/8 : RUN apk add --no-cache bash
 ---> Running in b3c9ad1bfe06
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz
(1/5) Installing ncurses-terminfo-base (6.1_p20180818-r1)
(2/5) Installing ncurses-terminfo (6.1_p20180818-r1)
(3/5) Installing ncurses-libs (6.1_p20180818-r1)
(4/5) Installing readline (7.0.003-r0)
(5/5) Installing bash (4.4.19-r1)
Executing bash-4.4.19-r1.post-install
Executing busybox-1.28.4-r0.trigger
OK: 14 MiB in 19 packages
Removing intermediate container b3c9ad1bfe06
 ---> 8ac100f8ab2f
Step 4/8 : COPY . /go/src/orpat
 ---> 7545fd3bf0d4
Step 5/8 : WORKDIR /go/src
 ---> Running in 469df33c4fea
Removing intermediate container 469df33c4fea
 ---> 69f0e4c2c42f
Step 6/8 : EXPOSE 8084/tcp
 ---> Running in 716e1d7b7f0f
Removing intermediate container 716e1d7b7f0f
 ---> 2bbd4e3c90b7
Step 7/8 : RUN chmod -vR 777 /go/src/orpat
 ---> Running in 1e9286d6f9ad
mode of '/go/src/orpat' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/revel' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/revel/templates' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/revel/templates/errors' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/revel/templates/errors/500.txt' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/revel/templates/errors/405.xml' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/revel/templates/errors/500.html' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/revel/templates/errors/405.html' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/revel/templates/errors/404.html' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/revel/templates/errors/500.xml' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/revel/templates/errors/500.json' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/revel/templates/errors/403.txt' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/revel/templates/errors/403.json' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/revel/templates/errors/404.txt' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/revel/templates/errors/404.json' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/revel/templates/errors/405.txt' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/revel/templates/errors/404.xml' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/revel/templates/errors/404-dev.html' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/revel/templates/errors/405.json' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/revel/templates/errors/403.xml' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/revel/templates/errors/500-dev.html' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/revel/templates/errors/403.html' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/revel/conf' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/revel/conf/mime-types.conf' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/testrunner' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/testrunner/testrunner.go' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/testrunner/app' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/testrunner/app/plugin.go' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/testrunner/app/controllers' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/testrunner/app/controllers/testrunner.go' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/testrunner/app/views' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/testrunner/app/views/TestRunner' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/testrunner/app/views/TestRunner/SuiteResult.html' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/testrunner/app/views/TestRunner/Index.html' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/testrunner/app/views/TestRunner/FailureDetail.html' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/testrunner/public' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/testrunner/public/js' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/testrunner/public/js/jquery-1.9.1.min.js' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/testrunner/public/js/bootstrap.min.js' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/testrunner/public/js/highlight.pack.js' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/testrunner/public/images' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/testrunner/public/images/favicon.png' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/testrunner/public/css' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/testrunner/public/css/github.css' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/testrunner/public/css/bootstrap.min.css' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/testrunner/conf' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/testrunner/conf/routes' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/static' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/static/static.go' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/static/app' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/static/app/controllers' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/github.com/revel/modules/static/app/controllers/static.go' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/log' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/log/orpat-requests.json' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/README.md' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/app' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/app/tmp' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/app/tmp/main.go' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/app/init.go' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/app/routes' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/app/routes/routes.go' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/app/controllers' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/app/controllers/app.go' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/app/views' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/app/views/header.html' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/app/views/footer.html' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/app/views/flash.html' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/app/views/debug.html' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/app/views/App' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/app/views/App/Index.html' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/app/views/errors' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/app/views/errors/500.html' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/app/views/errors/404.html' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/messages' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/messages/sample.en' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/public' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/public/js' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/public/js/bootstrap-3.3.6.min.js' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/public/js/jquery-2.2.4.min.js' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/public/fonts' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/public/fonts/glyphicons-halflings-regular.woff2' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/public/fonts/glyphicons-halflings-regular.woff' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/public/fonts/glyphicons-halflings-regular.ttf' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/public/img' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/public/img/favicon.png' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/public/css' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/public/css/bootstrap-3.3.6.min.css' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/tests' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/tests/apptest.go' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/conf' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/conf/routes' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/src/orpat/conf/app.conf' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/run.sh' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/Dockerfile' changed to 0777 (rwxrwxrwx)
mode of '/go/src/orpat/orpat' changed to 0777 (rwxrwxrwx)
Removing intermediate container 1e9286d6f9ad
 ---> cceab940ff2c
Step 8/8 : CMD [ "bash", "run.sh" ]
 ---> Running in 41b7bf5daee6
Removing intermediate container 41b7bf5daee6
 ---> 51ee4984d102
Successfully built 51ee4984d102
Successfully tagged orpat:latest

Но при создании контейнера из изображения он создается со статусом Exited. При перезапуске он снова переходит в Exited. Невозможно просмотреть приложение в браузере через порт 8084.

a@kc:~/docker/orpat$ sudo docker run -d -it -p 8084:8084 orpat
e0d87929635b1a0340b7ef297c1d01c1b9961d3e7562da6e9d79691a579058fd
a@kc:~/docker/orpat$ sudo docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
a@kc:~/docker/orpat$ sudo docker ps --all
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS               NAMES
e0d87929635b        orpat               "bash run.sh"            17 seconds ago      Exited (127) 16 seconds ago                       naughty_easley
7ed9b052abff        sample:1.0          "npm start"              5 days ago          Exited (0) 4 days ago                             sample_app
74b229937da3        mongo:3.0.15        "docker-entrypoint.s…"   5 days ago          Exited (0) 4 days ago                             sample_db
a@kc:~/docker/orpat$ sudo docker container start naughty_easley 
naughty_easley
a@kc:~/docker/orpat$ sudo docker ps --all
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS               NAMES
e0d87929635b        orpat               "bash run.sh"            46 seconds ago      Exited (127) 2 seconds ago                       naughty_easley
7ed9b052abff        sample:1.0          "npm start"              5 days ago          Exited (0) 4 days ago                            sample_app
74b229937da3        mongo:3.0.15        "docker-entrypoint.s…"   5 days ago          Exited (0) 4 days ago                            sample_db

Итак, я захожу в совершенно новый контейнер и выполняю это->

'sudo docker run -it -p 8084: 8084 orpat bash'

и получение ошибок типа->

a@kc:~/docker/orpat$ sudo docker run -it -p 8084:8084 orpat bash
bash-4.4# pwd
/go/src
bash-4.4# ls -a
.      ..     orpat
bash-4.4# cd orpat/
bash-4.4# ls -a
.           ..          Dockerfile  orpat       run.sh      src
bash-4.4# cat Dockerfile 
FROM golang:1.10.4-alpine3.8

RUN apk --no-cache add ca-certificates
RUN apk add --no-cache bash

COPY . /go/src/orpat

WORKDIR /go/src

EXPOSE 8084/tcp

RUN chmod -vR 777 /go/src/orpat

CMD [ "bash", "run.sh" ]
bash-4.4# ./run.sh 
./run.sh: line 3: /go/src/orpat/orpat: not found
bash-4.4# bash run.sh 
run.sh: line 3: /go/src/orpat/orpat: No such file or directory
bash-4.4# cat run.sh 
#!/bin/sh
SCRIPTPATH=$(cd "$(dirname "$0")"; pwd)
"$SCRIPTPATH/orpat" -importPath orpat/ -srcPath "$SCRIPTPATH/src" -runMode prod
bash-4.4# 

в файле conf у меня есть

# The IP address on which to listen.
http.addr = [::]

# The port on which to listen.
http.port = 8084

Может ли кто-нибудь помочь мне исправить это, я ищу двоичный файл exe для развертывания. Поскольку это минимальное тестовое приложение со страницей, я застрял на исходном спринте.

Хорошо, существует ли / go / src / orpat / orpat в образе / контейнере?

ptman 07.09.2018 14:21

Кажется, что он там вместе с разрешением 777, которое я выполнил в Dockerfile, а также внутри контейнера через bash. не знаю, почему так написано.

kcrest 07.09.2018 15:38

sh -x run.sh или просто попробуйте вручную запустить команды в run.sh

ptman 07.09.2018 15:40

Внутри контейнера по-прежнему написано, что не найдено [прикрепленный фрагмент в ответе]

kcrest 07.09.2018 15:50

Мой revel help build говорит usage: revel build [import path] [target path] [run mode]. Вы пробовали revel build orpat /go/src/orpat prod? Я вообще-то сам использую revel package.

ptman 07.09.2018 15:59

Спасибо, ptman, я сделал, как ты сказал, и это сработало.

kcrest 07.09.2018 16:54
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
6
308
1

Ответы 1

Я делаю примерно так:

CGO_ENABLED=0 revel package -m prod -a project

Dockerfile:

# you could do FROM scratch if you really need nothing
FROM alpine:3.10
# add dependencies
RUN apk --no-cache add ca-certificates tzdata
# add the untarred file produced by revel package
ADD project.tar.gz /opt
# whatever port
EXPOSE 8080
# I looked inside run.sh for this
CMD ["/opt/project", "-importPath", "project", "-srcPath", "/opt/src", "-runMode", "prod"]

если вы можете сделать коммит github с помощью базового приложения revel. как я пытаюсь делать сейчас. Я создаю новое приложение для веселья, названное розовым. не спрашивайте почему. revel new -a github.com/najamsk/revelplay/pink, затем создайте его, используя его в папке выходов внутри розовой папки. revel build -a $ (pwd) -t выводит -m prod, это мой путь, где находится новое приложение розового цвета. /home/najam/go/src/github.com/najamsk/revelplay/pink/outputs

najam 16.09.2019 19:59

Ваша проблема, скорее всего, заключается в том, что вы построили систему glibc и запустили систему musl. CGO_ENABLED=0 должен помочь в этом. strace поможет вам понять, почему. Как и ldd

ptman 16.09.2019 20:02

Другие вопросы по теме