Docker의 Phoenix Framework

5234 단어 ElixirPhoenix

환경 등


  • macOS
  • Docker For Mac Version 18.03.1

  • Dockerfile과 docker-compose를 clone하여 build


    git clone [email protected]:foxtrackjp/elixir_test.git
    cd elixir_test
    docker-compose build
    

    Dockerfile은 이런 느낌



    Dockerfile
    FROM elixir:alpine
    
    RUN mkdir /app
    WORKDIR /app
    
    RUN yes | mix local.hex
    RUN yes | mix archive.install https://github.com/phoenixframework/archives/raw/master/phx_new.ez
    RUN mix local.rebar --force
    RUN apk update && \
        apk upgrade && \
        apk add --update\
        bash \
        curl-dev \
        git \
        nodejs \
        nodejs-npm \
        && rm -rf /var/cache/apk/*
    

    alpine 베이스의 이미지가 있었으므로 이쪽을 이용했습니다. (빌드 후의 이미지는 150M 약 정도)

    docker-compose는 이런 느낌



    docker-compose.yml
    version: '3'
    services:
      db:
        image: mysql:5.7.22
        volumes:
          - mysql:/var/lib/mysql
        ports:
          - "3306:3306"
        environment:
          MYSQL_ROOT_PASSWORD: gJwWACGZqaukCjL7
    
      app:
        build: .
        tty: true
        volumes:
          - .:/app
        ports:
          - "80:80"
          - "4000:4000"
        command: mix phx.server
        depends_on:
          - db
    
    volumes:
      mysql:
        driver: local
    

    애플리케이션 만들기


    docker-compose run app mix phx.new . --app sample --database mysql
    

    Rails에서 말하면 rails new sample --database=mysql

    DB 연결 정보 설정



    생성된 응용 프로그램의 config/dev.exs에 DB 연결 정보를 설정합니다.

    dev.exs
    config :sample, Sample.Repo,
      adapter: Ecto.Adapters.MySQL,
      username: "root",
      password: "gJwWACGZqaukCjL7", #ここ
      database: "sample_dev",
      hostname: "db",#ここ
      pool_size: 10
    

    DB 만들기


    docker-compose run app mix ecto.create
    

    Rails에서 말하면 Rails db:create

    시작


    docker-compose up
    

    시작하면 서버가 시작되고 http://localhost:4000로 이동하여 환영 페이지가 표시되면 성공합니다.

    Welcome 페이지





    감상


  • 전체적으로 Rails 같아서 사이 좋게 될 것 같아
  • 라고 생각하면 조금 차이가 있다
  • 좋은 웹페이지 즐겨찾기