ä»æ¥ã¯ãå°ãªããšãåã ã®ããã³ããšã³ãéçºè ãšããã¯ãšã³ãéçºè ã§æ§æãããããŒã ã«ãããžã§ã¯ããè¿ éã«ïŒããã€ãã®ãã¬ãŒãã³ã°ã®1æéåŸãŸã§ïŒå±éãããšããããã»ã©åçŽã§ã¯ãªãæŠå¿µã«ã€ããŠèª¬æããŸãã
åæããŒã¿ã¯æ¬¡ã®ãšããã§ãããããžã§ã¯ãã®éçºãéå§ããããã·ã³ããã¯ãšã³ãããèšç»ãããŸãã ã€ãŸã ããã¯ãšã³ãã¯ããã£ãã·ã¥ãããããŒãžïŒãã³ãã¬ãŒããšã³ãžã³ã§ã¬ã³ããªã³ã°ïŒãã³ã³ã«ã¬ã³ãããžãã¯ïŒORMïŒãåãã3次å ã¢ãã«ãã³ã³ãããŒã©ãŒãšããŠæ©èœããREST APIã§æ§æãããŠããŸãã å®éããã®ãããªã·ã¹ãã ã®ãã¥ãŒã¯ãããã³ãã©ã³ããŒãèªåèªèº«ããçœäººããšèŠãªãããšãã§ããããŸããŸãªåå¿ãè§åºŠãããã³ãã®ä»ã®ãã®ããããããJSã§çž®å°ããã³ã¬ã³ããªã³ã°ãããŸãã
éçºç°å¢ã¯æ¬¡ã®ããã«ãªããŸãïŒUbuntu LTSïŒ14.04ïŒãPyCharmãããããããŒãžã§ã³ã®PythonïŒåæ§ã®ããŒãžã§ã³ãæã€ä»®æ³ç°å¢ãèµ·åããã«ã¯2.7ãå¿ èŠã§ãïŒã ãžã£ã³ãŽïŒ1.8ïŒ
次ã®åé¡ã解決ããŸãã
- çç£ã¹ããŒã¹ãå®å šã«ãšãã¥ã¬ãŒãããå¿ èŠããããããã«è¯ãã®ã¯ãç°å¢ãšãšãã«éçºããã»ã¹ã®åå è ã«ã³ãŒããæäŸããããšã§ãã
- ãããžã§ã¯ãã®ã©ã³ã¿ã€ã ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ç°å¢ããåé¢ããå¿ èŠããããŸãã PythonããŒãžã§ã³ãnode.jsã®èšå®ãããŒã¿ããŒã¹ã®å±éã«åé¡ã¯ãããŸããã ãã¹ã¯ãããã·ã¹ãã ãã¯ãªãŒã³ã§æãããã®ã«ããŸãã
- ãããžã§ã¯ãã®å±éãèªååããå¿ èŠããããŸããããã¯ãJSã®ç¬¬äžäººè ããããŠããããã¯ãŒã«ãªã³ãŒããŒã§ãåäœããŸãã ã¯ãããã¹ã¿ãŒãšãããŒãžã£ãŒã®äž¡æ¹ãæè¡åéã®åæç¥èãæã£ãŠãããããžã§ã¯ããæèµ·ã§ããããã«ããŸãã
- ç¹å¥ãªåé¡ãçºçãããããšãªããéçºããŒãžã§ã³ãæ¬çªç°å¢ããåé¢ããå¿ èŠããããŸãã ããŠã³ã¿ã€ã ã¯æå°éã«æããå¿ èŠããããŸãã ãªãŒãããã°ã©ããŒãèšå®å ã®ãã¹ãŠã®å€æ°ãä¿®æ£ããä»ã®åé¡ãä¿®æ£ãããŸã§ã誰ãåŸ æ©ããŸããã
- éçºåå è ãäºãã®åé¡ã解決ããªãããã«ããå¿ èŠããããŸãã JSéçºè ã¯ãCeleryã®å®è¡ãJSãã¡ã€ã«ã®ããŒãžãªã©ã®è€éããæãäžããã¹ãã§ã¯ãããŸããã ã¿ã€ãã»ãã¿ãŒã¯ã圌ã®Sassã³ãŒããã³ã³ãã€ã«ãããã®ãªã©ã«èå³ãæã£ãŠã¯ãããŸããã ããã¯å±éã®èªååã«é©çšãããŸããããããã®åé¡ã¯äžäŸ¿ã§ããå¯èœæ§ããããæåã¢ãŒãã§çºçããå Žåã¯è©³çŽ°ãªå±éæé ãæžãã®ã«æéããããããšã匷調ããããšãéèŠã§ãã
Dockerãã€ã³ã¹ããŒã«ãã
ãã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ã Dockerã䜿çšããŸãã Habréã¯ãã®ããŒã«ã«ã€ããŠå€ãã®ããšãèªã£ãŠããŸãã æ¬çªãµãŒããŒããŸã è€éã«ããäºå®ã®ãªãäºçŽãããã«è¡ããŸãã CIã³ã³ã»ããã®ãã®åŸã®é©çšã®ããã®åºç€ãåããéçºç°å¢ãæ§ç¯ããããšãéèŠã§ãã ãã ããçŸåšã®èšäºã®ãã¬ãŒã ã¯ãŒã¯å ã§ã¯ãdocker-composeã®ã¿ã䜿çšããè¿ éãªå±éã®æ¹æ³ã«ã€ããŠã¯è§ŠããŸããã 幞ããªããšã«ãDockerã«ã¯ãããããããããããŸãã
Dockerã¯ãMacããã³Windowsãã·ã³ã§ããŸããŸãªæåãåããŠã€ã³ã¹ããŒã«ã§ããŸãã ãã ããUbuntu 14.04ã«ã€ã³ã¹ããŒã«ããããšãæ€èšããŸãã ãã®ã·ã¹ãã ã«Dockerãã€ã³ã¹ããŒã«ããæé ããããŸãããåé¡ãçºçããå¯èœæ§ããããŸãã éšåããããã®æ瀺ã®ã¡ã¢ã«ããããæžãçããããšãã§ããŸãã
泚ïŒUbuntu Utopic 14.10ã¯Dockerã®aptãªããžããªã«ååšããŸãããå ¬åŒã«ã¯ãµããŒããããªããªããŸããã
ãããã£ãŠã å¥ã®æ瀺ã§æšå¥šãããŠããããã«èŠãããããèšå®ãããããŸããã
$ sudo apt-get update $ sudo apt-get install wget wget -qO- https://get.docker.com/ | sh
ãããŠã次ã®ã³ãã³ãã§ã€ã³ã¹ããŒã«ã確èªããŸãã
$ docker run hello-world
次ã«ãDockerãèµ·åããããã®ä»®æ³ç°å¢ãäœæããŸãã
$ mkdir ~/venvs $ virtualenv ~/venvs/docker $ source ~/venvs/docker/bin/activate (docker) $ pip install docker-compose (docker) $ docker-compose -v
ãããžã§ã¯ããäœæãã
PyCharmãéããäœæ¥çšã®ãããžã§ã¯ããäœæããŸãã
éèš³è åãã®ãããžã§ã¯ããäœæããŸãã ãããçŽç²ãªpythonãããžã§ã¯ãã«ããŸãã äžã®å³ã§ã¯ããããžã§ã¯ãã®æå°æ§æã衚瀺ãããŠããŸãã ã¹ãŒããŒãã€ã¶ãŒããµãŒããŒã®èµ·åãæ åœããŸãã .gitignoreãã¡ã€ã«ãš.dockerignoreãã¡ã€ã«ã䜿çšãããšããããžã§ã¯ããªããžããªã«ã³ããããããªããã¡ã€ã«ããŸãã¯dockerã³ã³ãããŒã«ããŠã³ããããªããã¡ã€ã«ãæå®ã§ããŸãã ã³ã³ãããŒã¯ãDocker-compose.ymlãã¡ã€ã«ã«ãã£ãŠç®¡çãããŸããããã¯ãã¹ãã£ãã¯ãšããŠç°¡åã§ãã«ã©ã·ãã³ãçªæã©ã€ãã«ãšããŠå¹æçã ããã§ãã ã¡ã€ã³ãããžã§ã¯ãã§ã¯ãäžè¶³ããŠããã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããDockerfileãè¿œå ã§äœæããŸãã
dockerfilesãã©ã«ããŒã«ã¯pgdataãµããã©ã«ããŒããããŸããããå Žæããå¥ã®å Žæã«ããŒã¿ã転éãããå Žåã«åããŠãPostgreSQLã®ããŒã¿ããŒã¹ããããŸãã dockerfiles / sshdconfã«ãSSHãµãŒããŒã®èšå®ãé 眮ããŸãã çŽæ¥æ¥ç¶ããå¿ èŠã¯ãããŸããããPyCharmã§ç°å¢ãèšå®ããããã«å¿ èŠã§ãã id_rsa.pubããŒã䜿çšãããšãPyCharmããã¹ã¯ãŒããæ°ã«ããã«ã³ã³ããã«æ¥ç¶ã§ããŸãã å¿ èŠãªã®ã¯ãSSHããŒã®æãäœæããå ¬éããŒãdockerfilesãã£ã¬ã¯ããªã«ã³ããŒïŒãŸãã¯è»¢éïŒããããšã ãã§ãã
srcãã£ã¬ã¯ããªã¯ããããžã§ã¯ãã®ã«ãŒãã§ãã ããã§ã®ã¿ã¹ã¯ã¯ãã³ã³ãããå±éããããšã§ãã
ã³ã³ãããäœæãã
docker-compose.ymlãã¡ã€ã«ã¯æ¬¡ã®ããã«ãªããŸãã
postgresql: image: postgres:9.3 env_file: .env volumes: - ./dockerfiles/pgdata:/var/lib/postgresql/data/pgdata ports: - "5433:5432" project: build: ./ env_file: .env working_dir: /opt/project command: bash -c "sleep 3 && /etc/init.d/ssh start && supervisord -n" volumes: - ./src:/opt/project - ./dockerfiles/sshdconf/sshd_config:/etc/ssh/sshd_config - ./dockerfiles/id_rsa.pub:/root/.ssh/authorized_keys - /home/USERNAME/.pycharm_helpers/:/root/.pycharm_helpers/ - ./supervisord.conf:/etc/supervisord.conf - ./djangod.conf:/etc/djangod.conf links: - postgresql ports: - "2225:22" - "8005:8000"
æåã®ã³ã³ããã§ããpostgresqlã«æ³šæããŠãã ããã æ確ã«.envãæž¡ããŠããã©ã€ããªããŒã¿ã圢æããŸãã portsãã£ã¬ã¯ãã£ãã¯ããŒã転éãæ åœããŸãã ã³ãã³ã®åã®æåã®æ°åã¯ãubuntã§ãã®ããŒã¿ããŒã¹ã䜿çšã§ããããŒãçªå·ã§ãã 2æ¡ç®ã¯ãã³ã³ãããã転éãããããŒãçªå·ã§ãã ããã©ã«ãã®PostgreSQLããŒã
Dockerfileãã2çªç®ã®ã³ã³ãããŒãåéããŸãã ãããã£ãŠãããã«ãã«ãããããŸãã èµ·åã³ãã³ãã«ã¯ããããªé 延ã䌎ããŸã-ã³ã³ããå ã®ããŒã¿ããŒã¹ãä»ã®ããŒã«ãèµ·åããæéãå¿ èŠãªå Žåã«åããŠã ããã§ã¯ãæ¥ç¶ãããŠãããã¹ãŠã®ãã£ã¬ã¯ããªãšãã¡ã€ã«ã衚瀺ãããŸãã ããŒã転éã®å ŽåãSSHçšã®ããŒã2225ãšãµãŒããŒçšã®8005ããããŸãã sshd_configã§ã¯ããããã®ãã£ã¬ã¯ãã£ããèªåçšã«èšå®ããå¿ èŠããããŸãã
PermitRootLoginãã¹ã¯ãŒããªã
StrictModesããã
RSAèªèšŒã¯ã
PubkeyAuthenticationã¯ã
AuthorizedKeysFileïŒ h / .ssh / authorized_keys
ãããã¯ãã¹ãŠéçºããŒã ã§ã®ã¿æ©èœããããšãå¿ããªãã§ãã ããã æ¬çªç°å¢ã«ã¯é 眮ããŸããã ãã ããååãšããŠãsshãµãŒããŒã¯ããŒã«ã«ã§ã®ã¿äœ¿çšã§ããŸãã
/home/USERNAME/.pycharm_helpers/:/root/.pycharm_helpers/-ãã®ããŠã³ãã³ãã³ãã䜿çšãããšãPyCharmãããã¹ããçŽæ¥å®è¡ããŠãããã°ã§ããŸãã ãŠãŒã¶ãŒåãããã«ç»é²ããããšãå¿ããªãã§ãã ãã
Supervisord.confã§ã次ã®ããã«èšè¿°ããŸãã
[unix_http_server]
file = / opt / project / daemons / Supervisor.sock; ãœã±ãããã¡ã€ã«ãžã®ãã¹
[ç£ç£ä»ã]
logfile = / opt / project / logs / Supervisord.log; ã¹ãŒããŒãã€ã¶ãŒãã°ãã¡ã€ã«
logfile_maxbytes = 50MB; ããŒããŒã·ã§ã³åã®ãã°ãã¡ã€ã«ã®æ倧ãµã€ãº
logfile_backups = 10; ããã¯ã¢ããããããã°ãã¡ã€ã«ã®æ°
loglevel = info; æ å ±ããããã°ãèŠåããã¬ãŒã¹
pidfile = / opt / project / daemons / Supervisord.pid; pidfileã®å Žæ
nodaemon = false; ã¹ãŒããŒãã€ã¶ãŒãããŒã¢ã³ãšããŠå®è¡ãã
minfds = 1024; èµ·åãã¡ã€ã«èšè¿°åã®æ°
minprocs = 200; ããã»ã¹èšè¿°åã®æ°
ãŠãŒã¶ãŒ=ã«ãŒã; ããã©ã«ããŠãŒã¶ãŒ
childlogdir = / opt / project / logs /; åãã°ãã¡ã€ã«ãååšããå Žæ
[rpcinterfaceïŒã¹ãŒããŒãã€ã¶ãŒ]
Supervisor.rpcinterface_factory = Supervisor.rpcinterfaceïŒmake_main_rpcinterface
[supervisorctl]
serverurl = unixïŒ///opt/project/daemons/supervisor.sock; unixã䜿çšããŸãã// unixãœã±ããçšã®ã¹ããŒã ã
[å«ã]
ïŒPythonçšcelerydã®ãã®è¡ã®ã³ã¡ã³ããå€ããŸã
ãã¡ã€ã«= djangod.conf
djangod.confã§ïŒ
[ããã°ã©ã ïŒdjango_project]
ã³ãã³ã= python /opt/project/manage.py runserver 0.0.0.0:8000
ãã£ã¬ã¯ããª= / opt / project /
stopasgroup = true
stdout_logfile = / opt / project / logs / django.log
stderr_logfile = / opt / project / logs / django_err.log
æ§æã泚ææ·±ãèªã人ã¯ããŸã äœæãããŠããªã2ã€ã®ãã©ã«ããŒãçºè¡šãããšããäºå®ã«æ³šæãæãå¿ èŠããããŸãã ããã§ã¯ãsrcã«logsããã³daemonsãã£ã¬ã¯ããªãäœæããŸãããã .gitignoreã§ããããã/ src / logs / *ããã³/ src / daemons / *ãè¿œå ããŸã
djangoã§ã¯ãéåžžstdout_logfileã¯æžã蟌ãŸããªãããšã«æ³šæããŠãã ããã ãã¹ãŠã®ãã°ã¯stderr_logfileã§ã·ã£ã¯ãŒã济ã³ãŸãã èšå®ã¯æ¢è£œã®æ瀺ããåãããŸããããstdout_logfileã¯éåžžã«æšæºçãªãã£ã¬ã¯ãã£ãã§ãããããè¡ãåé€ããããããŸããã
.envãã¡ã€ã«ãå¿ããªãã§ãã ããã
POSTGRES_USER = habrdockerarticle
POSTGRES_DB = habrdockerarticle
POSTGRES_PASSWORD = qwerty
POSTGRES_HOST = postgresql
POSTGRES_PORT = 5432
PGDââATA = / var / lib / postgresql / data / pgdata
C_FORCE_ROOT = true
.gitignoreã«è¿œå ããããšãè¿œå ããªãããšãã§ããŸã-é¢ä¿ãããŸããã
æåŸã«ãDockerfileã«å ¥åããŸã
pythonããïŒ2.7
apt-get update && apt-get install -y openssh-server \ãå®è¡ããŸã
&& apt-get purge -y --auto-remove -o APT :: AutoRemove :: RecommendedsImportant = false -o APT :: AutoRemove :: SuggestsImportant = false $ buildDeps
COPY ./src/requirements.txt ./requirements.txt
RUN pip install -r requirements.txt
Docker Hubã¯ãã³ã³ãããDebian Jessieã«ãã£ãŠæäŸãããããšãç§ãã¡ããé ããŸããã Dockerfileã§ã¯ãsshãµãŒããŒãã€ã³ã¹ããŒã«ããäžèŠãªããã±ãŒãžã®ãªã¹ããã¯ãªãŒã³ã¢ããããèŠä»¶ãã€ã³ã¹ããŒã«ããäºå®ã§ããã ãšããã§ãäŸåãã¡ã€ã«ã¯ãŸã äœæããŠããŸããã ãã®æ¬ é¥ãä¿®æ£ããsrcãã©ã«ããŒã«requirements.txtãäœæããå¿ èŠããããŸãã
ãžã£ã³ãŽ== 1.8
psycopg2
ç£ç£è
æåã®æã¡äžã
ãããžã§ã¯ãã¯æåã®èµ·åã®æºåãã§ããŠããŸãïŒ ã²ãšã€ãã€å§ããŸãããã æåã«ã次ãè¡ããŸãã
(docker) $ docker-compose run --rm --service-ports postgresql
ãã®æäœã«ãããpostgresqlãµãŒããŒã®èµ·åã«å¿ èŠãªã€ã¡ãŒãžãããŠã³ããŒããããŸãã ãµãŒããŒãèµ·åãã.envã§æå®ããããŠãŒã¶ãŒãšããŒã¿ããŒã¹ãèªåçã«äœæãããŸãã ã³ãã³ãã¯ããŒã¿ã®å ¥åããããã¯ããŸãããä»ã®ãšããã¯åæ¢ããŸããã pgadminçµç±ã§æ¥ç¶ããŠãããŒã¿ããŒã¹ãšãã°ã€ã³ããŒã«ã䜿çšå¯èœã§ããããšã確èªããŸã
ã芧ã®ãšããããã¹ãŠãä»äºçšã«äœæãããŠããŸãã
ã³ã³ãœãŒã«ã§ctrl + CããŒã®çµã¿åããã䜿çšããŠãããã»ã¹ãåæ¢ããŸãã ãããžã§ã¯ãã®ç»åãåéããå¿ èŠããããŸãã ã ããïŒ
(docker) $ docker-compose build project
ãã®ããŒã ã¯ãããžã§ã¯ããåéããDockerfileãããã¹ãŠã®ã³ãã³ããå®è¡ããŸãã ã€ãŸã sshãµãŒããŒãã€ã³ã¹ããŒã«ãããrequirements.txtããã®äŸåé¢ä¿ãã€ã³ã¹ããŒã«ãããŸãã ããã§ãDjangoãããžã§ã¯ãã®äœæã«ã€ããŠè³ªåããŸãã äœæããã«ã¯ããã€ãã®æ¹æ³ããããŸãã æãå®å šãªæ¹æ³ã¯ãubuntã®docker virtualenvã«å¿ èŠãªããŒãžã§ã³ã®Djangoãé 眮ããããšã§ãã
(docker) $ pip install django==1.8 (docker) $ cd ./src (docker) $ django-admin startproject projectname (docker) $ cd ../
venvã®Djangoã¯åé€ããããä»ã®ãããžã§ã¯ãã«æ®ãããšãã§ããŸãã ããšã¯ããããžã§ã¯ãå éšãsrcãã©ã«ããŒã®ã«ãŒãã«è»¢éããã ãã§ãã
ããã§ããããžã§ã¯ãã確èªããããŒã¿ããŒã¹ãžã®æ¥ç¶ãæ§æããå¿ èŠããããŸãã ãŸããsettings.pyã®èšå®ãå€æŽããŸãã
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': os.getenv('POSTGRES_DB'), 'USER': os.getenv('POSTGRES_USER'), 'PASSWORD': os.getenv('POSTGRES_PASSWORD'), 'HOST': os.getenv('POSTGRES_HOST'), 'PORT': int(os.getenv('POSTGRES_PORT')) } }
次ã«ããããžã§ã¯ãã³ã³ãããå®è¡ããŸãã
(docker) $ docker-compose up -d
ãããŠãè¯å®çãªçµæã確èªããŠãã ããïŒ
ãããžã§ã¯ããåæ¢ããŠäžæãã¡ã€ã«ãåé€ããã«ã¯ã次ã䜿çšã§ããŸãã
(docker) $ docker-compose stop && docker-compose rm -f
requirements.txtã§äœããå€æŽãããå Žåã次ã®ã³ãã³ãã䜿çšããŠè¿ éã«åæ§ç¯ããŸã
(docker) $ docker-compose stop && docker-compose rm -f && docker-compose build --no-cache project && docker-compose up -d
ååŸãããããžã§ã¯ãæ§é ã確èªããŸãããã
ç§ã®ã³ãŒãã®ã«ãŒããã©ã«ããŒã«ã¯ãPyCharmã®æ¢è£œã®ãã«ããŒãå«ãŸããŠããŸãã
JSããã°ã©ããŒçšã®ã³ã³ãããŒãæ¥ç¶ããŸã
ããã§ãã¹ãŠãå§ããããšãã§ããŸã-Gulpãæ¥ç¶ããŠéçã管çããŸãã docker-compose.ymlãã¡ã€ã«ã¯æ¬¡ã®ããã«ãªããŸãã
... gulp: build: ./src/gulp command: bash -c "sleep 3 && gulp" volumes: - ./src/gulp:/app - ./src/static/scripts:/app/build project: ... links: - postgresql - gulp ...
æ°ããã³ã³ãããŒãè¿œå ãããããžã§ã¯ããžã®äŸåé¢ä¿ã§ãããæå®ããŸããã
次ã«ããœãŒã¹çšã«gulpãã©ã«ããŒãäœæããã³ã³ãã€ã«æžã¿ãã¡ã€ã«çšã«static /ã¹ã¯ãªãããäœæããå¿ èŠããããŸãã src / gulpãã©ã«ããŒã§ã次ã®å 容ã®package.jsonãã¡ã€ã«ãäœæããŸãã
{ "name": "front", "version": "3.9.0", "description": "", "main": "gulpfile.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "BSD-2-Clause", "devDependencies": { "gulp": "~3.9.0", "gulp-uglify": "~1.4.2", "gulp-concat": "~2.6.0", "gulp-livereload": "~3.8.1", "gulp-jade": "~1.1.0", "gulp-imagemin": "~2.3.0", "tiny-lr": "0.2.1" } }
gulpfile.jsãäœæããŸãã src / gulpãã©ã«ããŒå ã ãµã³ãã«ã«å€ããã¡ã€ã«ã䜿çšããŸããïŒ
/** * Created by werevolff on 18.10.15. */ var gulp = require('gulp'), uglify = require('gulp-uglify'), concat = require('gulp-concat'), refresh = require('gulp-livereload'), lr = require('tiny-lr'), server = lr(); /** * Mainpage */ gulp.task('mainpage', function () { gulp.src(['./front/jquery/*.js', './front/bootstrap/*.js', './front/angularjs/angular.min.js', './front/angularjs/i18n/angular-locale_ru-ru.js', './front/project/**/*.js']) .pipe(uglify()) .pipe(concat('mainpage.js')) .pipe(gulp.dest('./build')) .pipe(refresh(server)); }); /** * Rebuild JS files */ gulp.task('lr-server', function () { server.listen(35729, function (err) { if (err) return console.log(err); }); }); /** * Gulp Tasks */ gulp.task('default', ['mainpage', 'lr-server'], function () { gulp.watch('./front/**/*.js', ['mainpage']); });
æ§æãããããããã«ã人æ°ã®ããã©ã€ãã©ãªãsrc / gulp / frontãã©ã«ããŒã«ã¢ããããŒãããJSããã°ã©ããŒãäœæããã¹ã¯ãªããçšã®src / gulp / front / projectãã©ã«ããŒãäœæããå¿ èŠããããŸãã ãŸããsrc / gulpã«Dockerfileãäœæããããšãå¿ããªãã§ãã ãã
neo9polska / nodejs-bower-gulpãã
package.jsonãã³ããŒããŸãã/package.json
node_modules ./node_modulesã®ã³ããŒ
npm install --verboseãå®è¡ããŸã
ããŠãããªãéèŠãªè³ªåã¯node_modulesã§ãã ãã®ãã©ã«ãããªããšãGulpãå«ãã³ã³ããã¯å ¬ç¶ãšã¬ã©ã¯ã¿ã«ãªããŸãã ããã«ã¯ããã®ãã©ã«ããŒãååŸããããã®2ã€ã®ãªãã·ã§ã³ããããŸãã
- ããŒã«ã«ãã·ã³ã§ãããžã§ã¯ãããã«ãããããããã¢ãžã¥ãŒã«ãã©ã«ããŒã転éããŸã
- DockerfileããFROMãã£ã¬ã¯ãã£ãã®äžã®ãã¹ãŠãåé€ããdocker-compose run --rm gulp npm install --verboseãå®è¡ããnode_modulesã䜿çšããŠãã£ã¬ã¯ããªã®æš©éãå€æŽããFROMã®äžã«ãã£ããã®ãè¿ããŸãã
ãã ããæš©å©ãå€æŽããå¿ èŠã¯ãããŸããã éçºè ãgulp rebuildã³ãã³ããåžžã«å®è¡ããããšãäœåãªããããã ãã§ãã ãã ããGithubã®èšäºã«èšèŒãããŠãããã¹ãŠã®ã³ãŒããæçš¿ããããããnode_modulesãååŸã§ããŸãã ãã®åé¡ã¯ãdocker-composeã«é¢é£ããŠããŸãã ãããã圌女ãåãã®ã¯ç°¡åã§ãã
ãããã£ãŠãã³ã³ãããèµ·åããçµæãšããŠ
(docker) $ docker-compose up -d
次ã®ã³ã³ãã€ã«æžã¿ãã¡ã€ã«ãååŸããå¿ èŠããããŸãã
ã
ã§ããïŒ ãããžã§ã¯ããgitã«ã¢ããããŒãããŠãäœæ¥ãéå§ã§ããŸãã
å®å šãªåèµ·ååèµ·åã³ãã³ãã¯æ¬¡ã®ããã«ãªããŸãã
(docker) $ docker-compose stop && docker-compose rm -f && docker-compose build --no-cache gulp && docker-compose build --no-cache project && docker-compose up -d
ããã»ã¹ã®æ°ããåå è ã®ãããžã§ã¯ããéå§ããã«ã¯ã次ãå®è¡ããã ãã§ååã§ãã
(docker) $ docker-compose build --no-cache gulp && docker-compose build --no-cache project && docker-compose up -d
å®è¡äžã®ã¢ããªã±ãŒã·ã§ã³ã§ã¡ã€ã³ã³ã³ãããã°ã衚瀺ããã«ã¯ïŒ
(docker) $ docker-compose logs CONTAINER NAME
ãããžã§ã¯ãã®Djangoãã°ã¯src / logsãã©ã«ããŒã«æžã蟌ãŸããŸãã
ãããžã§ã¯ãã®ãœãŒã¹ã³ãŒãã¯GitHubã§ç¢ºèªã§ããŸã ã
PSããäžã€ã®éèŠãªåŽé¢ã¯ãPyCharmã§ã®Pythonã€ã³ã¿ãŒããªã¿ãŒã®ã»ããã¢ããã§ãã ãã®èšå®ã§ã¯ããªã¢ãŒãã€ã³ã¿ãŒããªã¿ãŒãè¿œå ããã ãã§ãã
ãŸããPyCharmã«ã¯Dockerãšçµ±åããããã®ãã©ã°ã€ã³ããããŸãã ãããžã§ã¯ããdocker-machineã«ãããã€ããåé¡ã«å¯ŸåŠããªãã£ããããSSHæ¥ç¶ã䜿çšããŸãã