Как кодировать / запускать программы в контейнере Docker с помощью CLion? - PullRequest
3 голосов
/ 21 марта 2019

Я новичок в CLion

Я обнаружил, что CLion поддерживает Docker. Я хочу сделать следующее:

(Refer my Linux OS as A.)
(Refer the docker container within A as B.)


The library and environments are set up in B.
The CLion IDE is running in A.
I want to code/debug the program that runs in B using the IDE in A. 

Эта функция поддерживается CLion? Я читаю их документы, но не могу найти способ добиться этого

Спасибо

1 Ответ

3 голосов
/ 29 марта 2019

По состоянию на конец 2018 года Удаленная разработка в CLion довольно проста в настройке.Все, что нам нужно сделать, это настроить док-контейнер в качестве нашего «Удаленного хоста».


Я использовал руководство в https://github.com/shuhaoliu/docker-clion-dev в качестве справочного материала и внес несколько изменений.Вот что сработало для меня:

(Необязательно) Если у вас не установлен плагин Docker для CLion, получите его, следуя этим инструкциям .

Шаг 1 -Dockerfile

Измените этот Dockerfile , чтобы установить любые зависимости, необходимые для вашего проекта.Добавьте файл Docker в ваш проект.

FROM ubuntu:cosmic

########################################################
# Essential packages for remote debugging and login in
########################################################

RUN apt-get update && apt-get upgrade -y && apt-get install -y \
    apt-utils gcc g++ openssh-server cmake build-essential gdb gdbserver rsync vim 

RUN mkdir /var/run/sshd
RUN echo 'root:root' | chpasswd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd

ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile

# 22 for ssh server. 7777 for gdb server.
EXPOSE 22 7777

RUN useradd -ms /bin/bash debugger
RUN echo 'debugger:pwd' | chpasswd

########################################################
# Add custom packages and development environment here
########################################################

########################################################

CMD ["/usr/sbin/sshd", "-D"]

Шаг 2 - Docker Compose

В том же каталоге, что и предыдущий файл Docker, создайте файл docker-compose.yaml.

# From: https://github.com/shuhaoliu/docker-clion-dev/blob/master/docker-compose.yml

version: '3'

services:
  gdbserver:
    build:
      context: ./
      dockerfile: ./Dockerfile
    image: clion_dev
    security_opt:
      - seccomp:unconfined
    container_name: debug
    ports:
      - "7776:22"
      - "7777:7777"
    volumes:
      - .:/home/debugger/code
    working_dir: /home/debugger/code
    hostname: debug

Шаг 3

Убедитесь, что файлы Dockerfile и docker-compose.yml находятся в одном каталоге.

Опция 3A (с подключаемым модулем CLion Docker)

Щелкните правой кнопкой мыши файл docker-compose.yml и выберите Run.

enter image description here

Через минуту или две контейнер должен быть создан и доступен для просмотра из Clion'sВкладка Docker.

enter image description here

Опция 3B (без подключаемого модуля док-станции CLion)

Из каталога, содержащего Dockerfile и docker-compose.ymlфайлы, запустите:

docker-compose up -d

Шаг 4 - Настройте набор инструментов

Откройте Настройки-> Построение, Выполнение, Депликация -> Наборы инструментов и создайтеновый Удаленный хост Набор инструментов.

В поле Учетные данные щелкните небольшую папку с правой стороны и введите учетные данные дляпользователь отладчика, созданный в Dockerfile.

В приведенном выше примере имя пользователя - «отладчик», а пароль - «pwd».

Remote toolchain

Шаг 5 - Профиль CMake

Теперь мы должны настроить профиль CMake, чтобы использовать наш новый набор инструментов для удаленного хоста.

Перейдите к Настройки-> Построение, Выполнение, Депиляция -> Cmake исоздать новый профиль.Единственное необходимое изменение - это выбор набора инструментов, созданного на предыдущем шаге.

Cmake Profile

Шаг 6 - Запуск / отладка программы

На вкладке CMake убедитесь, чточто вы выбрали вновь созданный профиль CMake.

enter image description here

После загрузки проекта CMake в контейнер вы сможете выбрать CMakeProfile, который вынравится использовать в переключателе конфигурации запуска в правом верхнем углу CLion.

enter image description here

Надеюсь, если все прошло хорошо, вы теперь сможете запустить икод ebug в контейнере Docker!


Если что-то пошло не по плану, вот несколько ссылок, которые помогли мне заставить работать:

...