Я выполняю все эти операции на удаленном сервере, который является
ВМ под управлением Ubuntu 16.04.5 x64 .
Dockerfile проекта My Go выглядит так:
FROM golang:latest
ADD . $GOPATH/src/example.com/myapp
WORKDIR $GOPATH/src/example.com/myapp
RUN go build
#EXPOSE 80
#ENTRYPOINT $GOPATH/src/example.com/myapp/myapp
ENTRYPOINT ./myapp
#CMD ["./myapp"]
Когда я запускаю Docker-контейнер, используя docker-compose up -d
, приложение Go закрывается, и я вижу это в журналах Docker:
myapp_1 | / bin / sh: 1: ./myapp: ошибка формата exec docker_myapp_1
выход с кодом 2
Если я нахожу изображение с помощью docker images
и запускаю изображение как:
docker run -it 75d4a95ef5ec
Я вижу, что мои приложения golang работают нормально:
Среда viper: разработка HTTP-сервера, прослушивающего по адресу:
": 3005"
Когда я погуглил на эту ошибку, некоторые люди предложили скомпилировать с некоторыми специальными флагами, но я запускаю этот контейнер на том же хосте Ubuntu, поэтому я действительно растерялся, почему это не работает с помощью Docker.
Мой docker-compose.yml выглядит так:
version: "3"
services:
openresty:
build: ./openresty
ports:
- "80:80"
- "443:443"
depends_on:
- myapp
env_file:
- '.env'
restart: always
myapp:
build: ../myapp
volumes:
- /home/deploy/apps/myapp:/go/src/example.com/myapp
ports:
- "3005:3005"
depends_on:
- db
- redis
- memcached
env_file:
- '.env'
redis:
image: redis:alpine
ports:
- "6379:6379"
volumes:
- "/home/deploy/v/redis:/data"
restart: always
memcached:
image: memcached
ports:
- "11211:11211"
restart: always
db:
image: postgres:9.4
volumes:
- "/home/deploy/v/pgdata:/var/lib/postgresql/data"
restart: always