don't stop believing

docker 환경에서 swift 확인하기 본문

Tools/Docker

docker 환경에서 swift 확인하기

Tongchun 2018. 5. 30. 16:06


개발 및 서비스 환경을 Docker로 사용할 예정입니다.

Swift, Perfect로 API 서버를 만들 예정입니다.


우선, Ubuntu와 Docker 학습을 위해 아래와 같이 진행합니다.

  • Ubuntu latest 버번의 docker image를 다운 받습니다.
  • ubuntu container에 swift를 설치합니다.
  • swift 빌드를 위한 Library 및 Packge들을 설치합니다.
  • Swift Package Manager로 빌드해 봅니다.


시작에 압퍼 Docker 버전부터 확인해 봅니다.

$ docker --version
Docker version 18.03.1-ce, build 9ee9f40

Ubuntu 최신 버전의 이미지를 다운받습니다.

$ docker pull ubuntu:latest

다운받은 이미지들을 확인해 봅니다.

$ docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
redis                   latest              c5355f8853e4        2 months ago        107MB
ubuntu                  latest              452a96d81c30        4 weeks ago         79.6MB
tongchun/macaronapi     0.1.0               4307f5289a42        4 weeks ago         1.82GB

ubuntu 이미지를 실행시켜 컨테이너에 접속 합니다.

$ docker run -it --privileged --name swiftFun ubuntu:latest /bin/bash

바로 Ubuntu 컨테이너로 접속되었다면 Ubuntu 버전을 확인해 봅시다.

# cat /etc/*release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04 LTS"
NAME="Ubuntu"
VERSION="18.04 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

벌써 Ubuntu 18.04버전이 올라왔네요.

이제 swift를 다운로드 받아 봅시다. 최신 버전의 swift는 아래 url에서 확인할 수 있습니다.

현재 swift 4.1.1 버전이 Ubuntu 16.10 버전까지인데 일단 설치해 봅시다.

Ubuntu에서 파일 다운로드는 wget으로 합니다. 아마 wget이 설치되어 있지 않을 것이기 때문에 apt-get을 update하고 wget을 설치해 줍니다.

# apt-get update
# apt-get install wget

update와 wget이 설치가 되었다면 swift 4.1.1을 다운받아 봅시다.

현재 위치가 root 경로이기 때문에 home에 가서 다운받습니다.

# cd home
# wget https://swift.org/builds/swift-4.1.1-release/ubuntu1610/swift-4.1.1-RELEASE/swift-4.1.1-RELEASE-ubuntu16.10.tar.gz

ls -al 또는 ll 명령으로 현재 directory안의 파일을 확인해 봅니다.


다운받은 swift파일을 tar로 압축을 풉니다.

# tar -xvzf swift-4.1.1-RELEASE-ubuntu16.10.tar.gz

그리고 다시 directory를 확인하면 swift 압축파일과 동일한 이름으로 폴더가 생성되어 있고 그 안에 swift 파일들이 들어 있게 됩니다.


root directory에 swift 폴더를 만들고 압축 푼 폴더를 그 안으로 이동합니다.

# mkdir /swift
# mv ./swift-4.1.1-RELEASE-ubuntu16.10 /swift

이동이 잘 되었는지 경로를 확인해 봅니다.

swift 폴더의 usr/bin 폴더까이 이동하고 directory를 확인해 봅니다.

# cd /swift/swift-4.1.1-RELEASE-ubuntu16.10/usr/bin/


이제 Ubuntu 이디에서든 swift 명령을 사용할 수 있도록 path에 등록합니다.

# export PATH=/swift/swift-4.1.1-RELEASE-ubuntu16.10/usr/bin:$PATH

path 등록이 되었는지 swift 버전을 확인해 봅니다.

# swift -version
swift: error while loading shared libraries: libatomic.so.1: cannot open shared object file: No such file or directory

엇... 에러가 났습니다.

libatomic.so.1 이라는 라이브러리를 못찾았다고 합니다.

현재 docker image로 배포된 Ubuntu는 깡통입니다. Ubuntu OS에 필요한 파일 외 아무것도 없습니다.

필요한 라이브러리를 설치해 줘야 합니다.

# apt-get -y install apt-file gcc-snapshot libedit2 libpython2.7 libpython-dev libxml2

몇 개의 라이브러리를 설치하고 나서 다시 swift 버전을 확인해 줍니다.

# swift -version
Swift version 4.1.1 (swift-4.1.1-RELEASE)
Target: x86_64-unknown-linux-gnu

이렇게 Ubuntu에 swift를 설치하고 필요한 라이브러리들을 모두 설치해 줘야 합니다.


하지만.... 그런 수고로움을 덜 수 있는 방법은....





docker에서 배포하는 swift 이미지를 다운받으면 됩니다.

docker containder에서 exit로 나갑니다. 그리고 swift docker image를 다운 받습니다.

$ docker pull swift:latest

docker image를 확인합니다.

$ docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
redis                   latest              c5355f8853e4        2 months ago        107MB
swift                   latest              e8dc956c3315        4 weeks ago         1.35GB
ubuntu                  latest              452a96d81c30        4 weeks ago         79.6MB
tongchun/macaronapi     0.1.0               4307f5289a42        4 weeks ago         1.82GB

swift latest와 ubuntu latest의 사이즈부터 차이가 납니다.

docker의 swift image는 Ubuntu에 swift가 설치되어 있으며, 필요한 라이브라러가 설치된 image입니다.

swift 이미지를 접속해 봅시다.

$ docker run -it --privileged --name swiftEasy swift:latest /bin/bash

container에 접속이 되었다면 바로 swift 버전을 확인해 봅니다.

# swift -version
Swift version 4.1 (swift-4.1-RELEASE)
Target: x86_64-unknown-linux-gnu

which 명령으로 swift가 어디에 있는지 확인해 봅니다.

# which swift
/usr/bin/swift

swift를 확인했으니 Hello World!는 써봐야죠.

root directory에 tongchun이란 폴더를 만들고 그 안에 hello.swift 파일을 만듭니다.

# mkdir /tongchun
# cd tongchun
# touch hello.swift

Ubuntu에서 파일을 편집하는 툴중 제가 가장 선호하는 툴은 vim입니다.

vim을 설치하고 hello.swift 파일을 열어 봅시다.

# apt-get updat
# apt-get install vim
# vim hello.swift

빈 화면이 보이면 i 키를 한번 눌러 입력모드로 변경합니다.

그리고 아래와 같이 작성합니다.

import Foundation

func hello(name: String) {
	print("Hello, \(name)!")
}

hello(name: "tongchun")

작성이 완료되면 esc 키를 눌러 입력 모드에서 나갑니다.

그리고 :wq를 쓰고 파일을 저장하고 나갑니다.


이제 swift로 hello.swift 파일을 불러옵니다.

# swift hello.swift 
Hello, tongchun!

별도의 컴파일 없이 swift 파일을 해석해 출력합니다.


swift package manager까지 해봅시다.

swift package manager를 생성하고 바로 빌드하면 기본 Print 문구인 Hello World!가 출력됩니다.

먼저 적당한 프로젝트 폴더를 만들어 줍니다. 폴더명이 프로젝트명이 됩니다.

# mkdir /swiftServer
# cd /swiftServer/

그리고 swift package manager를 초기화 해줍니다.

# swift package init --type executable
Creating executable package: swiftServer
Creating Package.swift
Creating README.md
Creating .gitignore
Creating Sources/
Creating Sources/swiftServer/main.swift
Creating Tests/

swift package를 작성하기 위한 기본 파일들이 생성됩니다.

아무 변경없이 바로 빌드해 줍니다.

# swift build
Compile Swift Module 'swiftServer' (1 sources)
Linking ./.build/x86_64-unknown-linux/debug/swiftServer

swiftServer 프로젝트 빌드가 성공했고 빌드 파일은 ./.build/x86_64-unknown-linux/debug/swiftServer 이 경로 입니다.

바로 빌드된 파일을 실행해 줍니다.

# ./.build/x86_64-unknown-linux/debug/swiftServer
Hello, world!

여기까지 docker swift image를 이용한 swift 확인이었습니다.



'Tools > Docker' 카테고리의 다른 글

Docker를 설치합니다. (Windows, Mac, Linux)  (1) 2018.03.21
Docker 기본 명령  (0) 2018.03.15
Docker 알아보기  (0) 2018.03.14
Comments