6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Dockerにroswellをインストールしswankサーバーを起動。EmacsからSLIMEで接続して開発環境を整える話

Posted at

はじめに

最近Dockerを勉強してて、Docker上で開発環境ができたらいいなと思いました。
そのようにして開発されてる方は多いのかとは思いますが、私の場合は割とマイナーな開発環境を整えようとしているため、情報が少なく苦戦しております。
とりあえず、なんとかそれらしい環境が作れましたので書いておきます。

環境と構成

macOS Mojave
Emacs 26.3
SLIME
Docker
roswell(処理系はsbcl)

macOSにインストールされているGUI版のEmacs上のSLIMEから、Docker上のSWANKサーバーに接続して、sbclでCommonLispを開発します。

Emacsの環境を整える

Emacsでは次のパッケージを使っています。

  • docker-tramp
  • dockerfile-mode

SLIMEは次のコマンドでインストールします。

ros install slime

インストール後、.emacsに次の設定を追加します。

(load (expand-file-name "~/.roswell/helper.el"))

これでSLIMEは使えるようになります。

Dockerコンテナの起動

まずは次のDockerfileからイメージを作成します。

Dockerfile
FROM amazonlinux:latest

RUN yum install -y automake libcurl-devel zlib-devel git gcc make bzip2 tar
WORKDIR /root
RUN git clone -b release https://github.com/roswell/roswell.git
WORKDIR /root/roswell
RUN sh bootstrap && ./configure && make && make install && ros setup
CMD [ "ros","run", \
    "-e", "(ql:quickload :swank)", \
    "-e", "(setf swank::*loopback-interface* \"0.0.0.0\")", \
    "-e", "(swank:create-server :dont-close t :style :spawn)"]

docker imageコマンドでイメージを作成してもいいですが、dockerfile-modeを入れていると、C-c C-bでDockerイメージを作成できるので楽です。

ここではamazonlinux:roswellという名前でDockerイメージを作成します。

次にDockerコンテナを起動します。

docker run -itd --name roswell01 -h roswell01 -p 4005:4005 amazonlinux:roswell

EmacsからDocker上のswankサーバーに接続

次にEmacsからM-x slime-connect で localhost:4005 に対して接続します。
port はデフォルトで 4005 なので、M-x slime-connect RET RET で接続できます。

参考URL

https://www.common-lisp.net/project/slime/doc/html/Setting-up-the-lisp-image.html
https://blog.3qe.us/entry/2018/06/21/025948

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?