Как добавить зависимость в docker контейнер? - PullRequest
0 голосов
/ 20 марта 2020

Я хочу запустить программу на C ++, которая использует boost asio в контейнере docker. Но мой контейнер, похоже, ничего не знает о бусте.

Мой dockerfile:

FROM frolvlad/alpine-gcc
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp

RUN apk add --no-cache g++ && /usr/bin/g++ -o server main.cpp connection_manager.cpp connection.cpp 
mime_types.cpp reply.cpp request_handler.cpp request_parser.cpp server.cpp -lboost_system - 
lboost_thread -lpthread -std=c++11 -I/usr/include/boost

CMD ["./server"]

Я пишу команду $docker build и получаю:

enter image description here

Почему так

1 Ответ

1 голос
/ 20 марта 2020

Какое у вас frolvlad/alpine-gcc базовое изображение? Я предполагаю, что это просто g cc, загруженный в alpine ...

Вы можете добиться того же эффекта с помощью:

FROM alpine:3.10 AS build

# Load build packages
RUN apk --update add --no-cache \
  build-base \
  boost boost-dev

, сопровождаемого вашей командой RUN et c.

Вот рабочий пример двухэтапного Dockerfile для построения HTTP-сервера с использованием boost asio здесь: https://github.com/kenba/via-httplib/blob/master/Dockerfile

...