Docker Compose로 Elixir/Phoenix 개발 환경 구축
7129 단어 docker-composeElixir도커Phoenix
소개
이 기사에서는 Docker Compose를 사용한 Phoenix 애플리케이션 개발 환경 구축에 대해 설명합니다. 이 기사는 다음 버전을 기반으로 설명합니다.
Elixir: 1.8.1
Phoenix: 1.4.3
Node.js: 10.x
Docker: 18.09
또, 이후의 설명은 my-app
디렉토리에 my_app
라고 하는 어플리케이션을 구축한다고 전제로 진행합니다.
Docker 파일 만들기
먼저 Docker 파일을 프로젝트 디렉토리에 넣습니다. 적절한 위치에 my-app
라는 디렉토리를 만들고 다음에 표시된 Dockerfile
와 docker-compose.yml
를 디렉토리에 저장하십시오.
my-app/DockerfileFROM elixir:1.8.1
ENV NODE_VERSION 10.x
RUN curl -sL https://deb.nodesource.com/setup_${NODE_VERSION} | bash \
&& apt-get install -y nodejs
RUN npm install npm@latest -g
RUN mix local.hex --force && \
mix archive.install hex phx_new 1.4.3 --force && \
mix local.rebar --force
WORKDIR /app
my-app/docker-compose.ymlversion: '3.2'
services:
web:
build: .
ports:
- '4000:4000'
command: mix phx.server
environment:
- MIX_ENV=dev
- PORT=4000
volumes:
- .:/app
db:
image: postgres
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_HOST=db
Phoenix 프로젝트 준비
프로젝트 생성
이제 mix phx.new
명령으로 새 Phoenix 프로젝트를 만듭니다. my-app
디렉토리에서 다음 명령을 실행하십시오.
$ docker-compose run web mix phx.new . --app my_app
실행하는 동안 다음과 같은 확인 메시지가 표시되지만 y
를 입력하여 처리를 계속하십시오.
먼저 Docker 파일을 프로젝트 디렉토리에 넣습니다. 적절한 위치에
my-app
라는 디렉토리를 만들고 다음에 표시된 Dockerfile
와 docker-compose.yml
를 디렉토리에 저장하십시오.my-app/Dockerfile
FROM elixir:1.8.1
ENV NODE_VERSION 10.x
RUN curl -sL https://deb.nodesource.com/setup_${NODE_VERSION} | bash \
&& apt-get install -y nodejs
RUN npm install npm@latest -g
RUN mix local.hex --force && \
mix archive.install hex phx_new 1.4.3 --force && \
mix local.rebar --force
WORKDIR /app
my-app/docker-compose.yml
version: '3.2'
services:
web:
build: .
ports:
- '4000:4000'
command: mix phx.server
environment:
- MIX_ENV=dev
- PORT=4000
volumes:
- .:/app
db:
image: postgres
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_HOST=db
Phoenix 프로젝트 준비
프로젝트 생성
이제 mix phx.new
명령으로 새 Phoenix 프로젝트를 만듭니다. my-app
디렉토리에서 다음 명령을 실행하십시오.
$ docker-compose run web mix phx.new . --app my_app
실행하는 동안 다음과 같은 확인 메시지가 표시되지만 y
를 입력하여 처리를 계속하십시오.
$ docker-compose run web mix phx.new . --app my_app
The directory /app already exists. Are you sure you want to continue? [Yn]
Fetch and install dependencies? [Yn]
위의 작업이 완료되면 다음과 같은 파일/디렉토리가 만들어져야 합니다.
my-app
├── _build
├── assets
├── config
├── deps
├── libs
├── priv
├── test
├── .formatter.exs
├── .gitignore
├── docker-compose.yml
├── Dockerfile
├── mix.exs
├── mix.lock
└── README.md
DB 설정
그런 다음 DB를 설정합니다. Phoenix 는 디폴트로 PostgreSQL 를 사용하므로, 여기서는 그대로 PostgreSQL 를 이용하는 것으로 합니다.
설정 파일 변경
my-app/config/dev.exs
를 열고 Postgres hostname을 다음과 같이 변경하십시오.
my-app/config/dev.exs...
# Configure your database
config :my_app, MyApp.Repo,
adapter: Ecto.Adapters.Postgres,
username: "postgres",
password: "postgres",
database: "my_app_dev",
hostname: "db",
pool_size: 10
docker-compose 실행
docker-compose.yml
로 정의하고 있는 각 service 를 기동합니다. 다음 docker-compose
명령을 실행하십시오.
$ docker-compose up -d
컴파일 및 마이그레이션
마지막으로 다음 명령을 실행하여 종속 라이브러리를 컴파일하고 DB를 마이그레이션합니다.
$ docker-compose run web bash -c "mix deps.compile && mix ecto.create && mix ecto.migrate"
실행 확인
브라우저에서 http://localhost:4000
라는 URL을 지정하십시오. 다음과 같은 Phoenix 기본 초기 페이지가 표시되면 성공합니다.
개발 중 작업
Docker 컨테이너에서 명령 실행
실행 중인 Docker 컨테이너에 대해 명령을 실행하려면 다음과 같이 docker-compose run 을 사용합니다.
$ docker-compose run web mix hex.info
여기서는 web
라는 service에 대해 mix hex.info
라는 명령을 실행합니다.
또한 ssh와 같이 컨테이너에서 계속 명령을 실행하려면 docker exec -it을 사용하십시오.
$ docker exec -it {コンテナのID} bash
컨테이너 중지
docker-compose up -d
에서 시작한 Docker 컨테이너를 중지하려면 다음 명령을 실행합니다.
$ docker-compose stop
또한 컨테이너를 중지할 뿐만 아니라 컨테이너, 볼륨을 삭제할 때까지 다음과 같이 다운 을 지정합니다.
$ docker-compose down
이 명령을 실행하면 개발 중에 PostgreSQL에 저장된 데이터도 삭제됩니다.
참고
Dockerizing a Phoenix Application
Reference
이 문제에 관하여(Docker Compose로 Elixir/Phoenix 개발 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Tsuyoshi84/items/336f31f6dcc2cd8a077b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
...
# Configure your database
config :my_app, MyApp.Repo,
adapter: Ecto.Adapters.Postgres,
username: "postgres",
password: "postgres",
database: "my_app_dev",
hostname: "db",
pool_size: 10
$ docker-compose up -d
$ docker-compose run web bash -c "mix deps.compile && mix ecto.create && mix ecto.migrate"
브라우저에서
http://localhost:4000
라는 URL을 지정하십시오. 다음과 같은 Phoenix 기본 초기 페이지가 표시되면 성공합니다.개발 중 작업
Docker 컨테이너에서 명령 실행
실행 중인 Docker 컨테이너에 대해 명령을 실행하려면 다음과 같이 docker-compose run 을 사용합니다.
$ docker-compose run web mix hex.info
여기서는 web
라는 service에 대해 mix hex.info
라는 명령을 실행합니다.
또한 ssh와 같이 컨테이너에서 계속 명령을 실행하려면 docker exec -it을 사용하십시오.
$ docker exec -it {コンテナのID} bash
컨테이너 중지
docker-compose up -d
에서 시작한 Docker 컨테이너를 중지하려면 다음 명령을 실행합니다.
$ docker-compose stop
또한 컨테이너를 중지할 뿐만 아니라 컨테이너, 볼륨을 삭제할 때까지 다음과 같이 다운 을 지정합니다.
$ docker-compose down
이 명령을 실행하면 개발 중에 PostgreSQL에 저장된 데이터도 삭제됩니다.
참고
Dockerizing a Phoenix Application
Reference
이 문제에 관하여(Docker Compose로 Elixir/Phoenix 개발 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Tsuyoshi84/items/336f31f6dcc2cd8a077b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ docker-compose run web mix hex.info
$ docker exec -it {コンテナのID} bash
$ docker-compose stop
$ docker-compose down
Dockerizing a Phoenix Application
Reference
이 문제에 관하여(Docker Compose로 Elixir/Phoenix 개발 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Tsuyoshi84/items/336f31f6dcc2cd8a077b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)