ここを参考に、sshで直接コンテナに入れるように改良。vscodeにDWARF pluginを入れてリモートでコンテナに入りデバッグするとCのソースコードレベルでブレークポイントが効くようになった。
FROM ubuntu:24.04
RUN apt update \
&& apt -y upgrade \
&& apt clean && rm -rf /var/lib/apt/lists/*
RUN apt update \
&& apt -y install tzdata \
&& apt clean && rm -rf /var/lib/apt/lists/*
ENV TZ=Asia/Tokyo
RUN apt update \
&& apt -y install --no-install-recommends build-essential \
&& apt clean && rm -rf /var/lib/apt/lists/*
RUN apt update \
&& apt -y install git cmake wget python3 openssh-server vim \
&& apt clean && rm -rf /var/lib/apt/lists/*
# emscripten ##########################
ARG EMSDKDIR=/opt/emsdk
RUN git clone https://github.com/emscripten-core/emsdk.git ${EMSDKDIR}
RUN cd ${EMSDKDIR} \
&& ./emsdk install latest \
&& ./emsdk activate latest
RUN echo "source ${EMSDKDIR}/emsdk_env.sh" >> ~/.bash_profile
# sshd ################################
RUN mkdir -p /var/run/sshd
RUN echo 'root:password' | chpasswd
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -i 's/#PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
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
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
services:
emsdk:
build: ./
extra_hosts:
- "host.docker.internal:192.168.10.180"
working_dir: /root/src
tty: true
stdin_open: true
volumes:
- ./src:/root/src
ports:
- 8080:8080
- 2222:22
- 9223:9223
