hackoregon / transportation-system-backend

2018 repo for the transportation api backend
MIT License
8 stars 2 forks source link

api container is writing files in git repo as root! #36

Closed znmeb closed 6 years ago

znmeb commented 6 years ago

Because docker-compose.yml has

    volumes:
      - .:/code

for the api service, anything the API container writes in /code will also be written - as root - in the GitHub repo.

If the container needs to write to the host filesystem, we need to find another place for it to do it and change the operating instructions. If it doesn't need to write to the host filesystem, we need to take the volume definition out of docker-compose.yml.

BrianHGrant commented 6 years ago

I am unsure as to this issue, especially as is the documented setup as per step 9 in official docker-compose django setup docs: https://docs.docker.com/compose/django/

kiniadit commented 6 years ago

@znmeb was this on Linux? I think Docker for Linux sets django-admin to root permissions. You might have to run sudo chown -R $USER:$USER . to revert to user level permissions.

znmeb commented 6 years ago

Yeah, that was what I was thinking. It does execute correctly without the volume, presumably because the Dockerfiile is copying the code onto the image. I'm going to try it again with the volume and see if it's overwriting anything.

znmeb commented 6 years ago

Here's what it's adding:

$ git status 
On branch znmeb-merge-new-database
Your branch is up to date with 'origin/znmeb-merge-new-database'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    api/migrations/0001_initial.py
    rest_framework/

nothing added to commit but untracked files present (use "git add" to track)
$ ls -R rest_framework
rest_framework:
css  docs  fonts  img  js

rest_framework/css:
bootstrap.min.css  bootstrap-tweaks.css  default.css  prettify.css

rest_framework/docs:
css  fonts  img  js

rest_framework/docs/css:
base.css  bootstrap.min.css  bootstrap-theme.min.css  font-awesome-4.0.3.css  highlight.css  jquery.json-view.min.css

rest_framework/docs/fonts:
fontawesome-webfont.eot  fontawesome-webfont.woff          glyphicons-halflings-regular.ttf
fontawesome-webfont.svg  glyphicons-halflings-regular.eot  glyphicons-halflings-regular.woff
fontawesome-webfont.ttf  glyphicons-halflings-regular.svg  glyphicons-halflings-regular.woff2

rest_framework/docs/img:
favicon.ico  grid.png

rest_framework/docs/js:
api.js  bootstrap.min.js  highlight.pack.js  jquery-1.10.2.min.js  jquery.json-view.min.js

rest_framework/fonts:
glyphicons-halflings-regular.eot  glyphicons-halflings-regular.ttf   glyphicons-halflings-regular.woff2
glyphicons-halflings-regular.svg  glyphicons-halflings-regular.woff

rest_framework/img:
glyphicons-halflings.png  glyphicons-halflings-white.png  grid.png

rest_framework/js:
ajax-form.js  bootstrap.min.js  coreapi-0.1.1.js  csrf.js  default.js  jquery-1.12.4.min.js  prettify-min.js
$ cat api/migrations/0001_initial.py 
# Generated by Django 2.0.1 on 2018-02-18 23:30

from django.db import migrations, models

class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Crash',
            fields=[
                ('crash_id', models.IntegerField(primary_key=True, serialize=False)),
                ('ser_no', models.TextField(blank=True, null=True)),
                ('crash_dt', models.TextField(blank=True, null=True)),
                ('crash_mo_no', models.IntegerField(blank=True, null=True)),
                ('crash_day_no', models.IntegerField(blank=True, null=True)),
                ('crash_yr_no', models.IntegerField(blank=True, null=True)),
                ('crash_wk_day_cd', models.IntegerField(blank=True, null=True)),
                ('crash_hr_no', models.IntegerField(blank=True, null=True)),
                ('crash_hr_short_desc', models.TextField(blank=True, null=True)),
                ('cnty_id', models.IntegerField(blank=True, null=True)),
                ('cnty_nm', models.TextField(blank=True, null=True)),
                ('city_sect_id', models.IntegerField(blank=True, null=True)),
                ('city_sect_nm', models.TextField(blank=True, null=True)),
                ('urb_area_cd', models.IntegerField(blank=True, null=True)),
                ('urb_area_short_nm', models.TextField(blank=True, null=True)),
                ('fc_cd', models.IntegerField(blank=True, null=True)),
                ('fc_short_desc', models.TextField(blank=True, null=True)),
                ('nhs_flg', models.IntegerField(blank=True, null=True)),
                ('hwy_no', models.IntegerField(blank=True, null=True)),
                ('hwy_sfx_no', models.NullBooleanField()),
                ('hwy_med_nm', models.TextField(blank=True, null=True)),
                ('rdwy_no', models.IntegerField(blank=True, null=True)),
                ('hwy_compnt_cd', models.IntegerField(blank=True, null=True)),
                ('hwy_compnt_short_desc', models.TextField(blank=True, null=True)),
                ('mlge_typ_cd', models.IntegerField(blank=True, null=True)),
                ('mlge_typ_short_desc', models.TextField(blank=True, null=True)),
                ('rd_con_no', models.IntegerField(blank=True, null=True)),
                ('lrs_val', models.TextField(blank=True, null=True)),
                ('lat_deg_no', models.IntegerField(blank=True, null=True)),
                ('lat_minute_no', models.IntegerField(blank=True, null=True)),
                ('lat_sec_no', models.FloatField(blank=True, null=True)),
                ('longtd_deg_no', models.IntegerField(blank=True, null=True)),
                ('longtd_minute_no', models.IntegerField(blank=True, null=True)),
                ('longtd_sec_no', models.FloatField(blank=True, null=True)),
                ('lat_dd', models.FloatField(blank=True, null=True)),
                ('longtd_dd', models.FloatField(blank=True, null=True)),
                ('specl_jrsdct_id', models.NullBooleanField()),
                ('specl_jrsdct_short_desc', models.NullBooleanField()),
                ('jrsdct_grp_cd', models.NullBooleanField()),
                ('jrsdct_grp_long_desc', models.NullBooleanField()),
                ('agy_st_no', models.TextField(blank=True, null=True)),
                ('st_full_nm', models.TextField(blank=True, null=True)),
                ('recre_rd_nm', models.NullBooleanField()),
                ('isect_agy_st_no', models.TextField(blank=True, null=True)),
                ('isect_st_full_nm', models.TextField(blank=True, null=True)),
                ('isect_recre_rd_nm', models.NullBooleanField()),
                ('isect_seq_no', models.IntegerField(blank=True, null=True)),
                ('from_isect_dstnc_qty', models.IntegerField(blank=True, null=True)),
                ('cmpss_dir_cd', models.IntegerField(blank=True, null=True)),
                ('mp_no', models.FloatField(blank=True, null=True)),
                ('post_speed_lmt_val', models.IntegerField(blank=True, null=True)),
                ('rd_char_cd', models.IntegerField(blank=True, null=True)),
                ('rd_char_short_desc', models.TextField(blank=True, null=True)),
                ('off_rdwy_flg', models.IntegerField(blank=True, null=True)),
                ('isect_typ_cd', models.IntegerField(blank=True, null=True)),
                ('isect_typ_short_desc', models.TextField(blank=True, null=True)),
                ('isect_rel_flg', models.IntegerField(blank=True, null=True)),
                ('rndabt_flg', models.IntegerField(blank=True, null=True)),
                ('drvwy_rel_flg', models.IntegerField(blank=True, null=True)),
                ('ln_qty', models.IntegerField(blank=True, null=True)),
                ('turng_leg_qty', models.IntegerField(blank=True, null=True)),
                ('medn_typ_cd', models.IntegerField(blank=True, null=True)),
                ('medn_typ_short_desc', models.TextField(blank=True, null=True)),
                ('impct_loc_cd', models.IntegerField(blank=True, null=True)),
                ('crash_typ_cd', models.TextField(blank=True, null=True)),
                ('crash_typ_short_desc', models.TextField(blank=True, null=True)),
                ('collis_typ_cd', models.TextField(blank=True, null=True)),
                ('collis_typ_short_desc', models.TextField(blank=True, null=True)),
                ('crash_svrty_cd', models.IntegerField(blank=True, null=True)),
                ('crash_svrty_short_desc', models.TextField(blank=True, null=True)),
                ('wthr_cond_cd', models.IntegerField(blank=True, null=True)),
                ('wthr_cond_short_desc', models.TextField(blank=True, null=True)),
                ('rd_surf_cond_cd', models.IntegerField(blank=True, null=True)),
                ('rd_surf_short_desc', models.TextField(blank=True, null=True)),
                ('lgt_cond_cd', models.IntegerField(blank=True, null=True)),
                ('lgt_cond_short_desc', models.TextField(blank=True, null=True)),
                ('traf_cntl_device_cd', models.IntegerField(blank=True, null=True)),
                ('traf_cntl_device_short_desc', models.TextField(blank=True, null=True)),
                ('traf_cntl_func_flg', models.IntegerField(blank=True, null=True)),
                ('invstg_agy_cd', models.IntegerField(blank=True, null=True)),
                ('invstg_agy_short_desc', models.TextField(blank=True, null=True)),
                ('crash_evnt_1_cd', models.IntegerField(blank=True, null=True)),
                ('crash_evnt_1_short_desc', models.TextField(blank=True, null=True)),
                ('crash_evnt_2_cd', models.IntegerField(blank=True, null=True)),
                ('crash_evnt_2_short_desc', models.TextField(blank=True, null=True)),
                ('crash_evnt_3_cd', models.IntegerField(blank=True, null=True)),
                ('crash_evnt_3_short_desc', models.TextField(blank=True, null=True)),
                ('crash_cause_1_cd', models.IntegerField(blank=True, null=True)),
                ('crash_cause_1_short_desc', models.TextField(blank=True, null=True)),
                ('crash_cause_2_cd', models.IntegerField(blank=True, null=True)),
                ('crash_cause_2_short_desc', models.TextField(blank=True, null=True)),
                ('crash_cause_3_cd', models.IntegerField(blank=True, null=True)),
                ('crash_cause_3_short_desc', models.TextField(blank=True, null=True)),
                ('schl_zone_ind', models.IntegerField(blank=True, null=True)),
                ('wrk_zone_ind', models.IntegerField(blank=True, null=True)),
                ('alchl_invlv_flg', models.IntegerField(blank=True, null=True)),
                ('drug_invlv_flg', models.IntegerField(blank=True, null=True)),
                ('crash_speed_invlv_flg', models.IntegerField(blank=True, null=True)),
                ('crash_hit_run_flg', models.IntegerField(blank=True, null=True)),
                ('pop_rng_cd', models.IntegerField(blank=True, null=True)),
                ('pop_rng_med_desc', models.TextField(blank=True, null=True)),
                ('rd_cntl_cd', models.IntegerField(blank=True, null=True)),
                ('rd_cntl_med_desc', models.TextField(blank=True, null=True)),
                ('rte_typ_cd', models.TextField(blank=True, null=True)),
                ('rte_id', models.TextField(blank=True, null=True)),
                ('rte_nm', models.TextField(blank=True, null=True)),
                ('reg_id', models.IntegerField(blank=True, null=True)),
                ('dist_id', models.TextField(blank=True, null=True)),
                ('seg_mrk_id', models.TextField(blank=True, null=True)),
                ('seg_pt_lrs_meas', models.FloatField(blank=True, null=True)),
                ('unloct_flg', models.IntegerField(blank=True, null=True)),
                ('crash_last_ud_dt', models.TextField(blank=True, null=True)),
                ('tot_vhcl_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_fatal_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_inj_lvl_a_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_inj_lvl_b_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_inj_lvl_c_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_inj_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_uninjd_age00_04_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_uninjd_per_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_ped_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_ped_fatal_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_ped_inj_lvl_a_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_ped_inj_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_pedcycl_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_pedcycl_fatal_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_pedcycl_inj_lvl_a_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_pedcycl_inj_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_unknwn_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_unknwn_fatal_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_unknwn_inj_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_occup_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_per_invlv_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_sfty_equip_used_qty', models.IntegerField(blank=True, null=True)),
                ('tot_sfty_equip_unused_qty', models.IntegerField(blank=True, null=True)),
                ('tot_sfty_equip_use_unknown_qty', models.IntegerField(blank=True, null=True)),
                ('tot_psngr_vhcl_occ_unrestrnd_fatal_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_mcyclst_fatal_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_mcyclst_inj_lvl_a_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_mcyclst_inj_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_mcyclst_unhelmtd_fatal_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_alchl_impaired_drvr_inv_fatal_cnt', models.IntegerField(blank=True, null=True)),
                ('tot_drvr_age_01_20_cnt', models.IntegerField(blank=True, null=True)),
            ],
            options={
                'db_table': 'crash',
                'managed': False,
            },
        ),
        migrations.CreateModel(
            name='Partic',
            fields=[
                ('crash_id', models.IntegerField(blank=True, null=True)),
                ('vhcl_id', models.IntegerField(blank=True, null=True)),
                ('partic_id', models.IntegerField(primary_key=True, serialize=False)),
                ('partic_dsply_seq_no', models.IntegerField(blank=True, null=True)),
                ('vhcl_coded_seq_no', models.IntegerField(blank=True, null=True)),
                ('partic_vhcl_seq_no', models.IntegerField(blank=True, null=True)),
                ('partic_typ_cd', models.IntegerField(blank=True, null=True)),
                ('partic_typ_short_desc', models.TextField(blank=True, null=True)),
                ('partic_hit_run_flg', models.IntegerField(blank=True, null=True)),
                ('pub_empl_flg', models.IntegerField(blank=True, null=True)),
                ('sex_cd', models.IntegerField(blank=True, null=True)),
                ('age_val', models.IntegerField(blank=True, null=True)),
                ('drvr_lic_stat_cd', models.IntegerField(blank=True, null=True)),
                ('drvr_lic_stat_short_desc', models.TextField(blank=True, null=True)),
                ('drvr_res_stat_cd', models.IntegerField(blank=True, null=True)),
                ('drvr_res_short_desc', models.TextField(blank=True, null=True)),
                ('inj_svrty_cd', models.IntegerField(blank=True, null=True)),
                ('inj_svrty_short_desc', models.TextField(blank=True, null=True)),
                ('sfty_equip_use_cd', models.IntegerField(blank=True, null=True)),
                ('sfty_equip_use_short_desc', models.TextField(blank=True, null=True)),
                ('airbag_deploy_ind', models.IntegerField(blank=True, null=True)),
                ('mvmnt_cd', models.IntegerField(blank=True, null=True)),
                ('mvmnt_short_desc', models.TextField(blank=True, null=True)),
                ('cmpss_dir_from_cd', models.IntegerField(blank=True, null=True)),
                ('partic_cmpss_dir_from_short_desc', models.TextField(blank=True, null=True)),
                ('cmpss_dir_to_cd', models.IntegerField(blank=True, null=True)),
                ('partic_cmpss_dir_to_short_desc', models.TextField(blank=True, null=True)),
                ('non_motrst_loc_cd', models.IntegerField(blank=True, null=True)),
                ('non_motrst_loc_short_desc', models.TextField(blank=True, null=True)),
                ('actn_cd', models.IntegerField(blank=True, null=True)),
                ('actn_short_desc', models.TextField(blank=True, null=True)),
                ('partic_err_1_cd', models.IntegerField(blank=True, null=True)),
                ('partic_err_1_short_desc', models.TextField(blank=True, null=True)),
                ('partic_err_2_cd', models.IntegerField(blank=True, null=True)),
                ('partic_err_2_short_desc', models.TextField(blank=True, null=True)),
                ('partic_err_3_cd', models.IntegerField(blank=True, null=True)),
                ('partic_err_3_short_desc', models.TextField(blank=True, null=True)),
                ('partic_cause_1_cd', models.IntegerField(blank=True, null=True)),
                ('partic_cause_1_short_desc', models.TextField(blank=True, null=True)),
                ('partic_cause_2_cd', models.IntegerField(blank=True, null=True)),
                ('partic_cause_2_short_desc', models.TextField(blank=True, null=True)),
                ('partic_cause_3_cd', models.IntegerField(blank=True, null=True)),
                ('partic_cause_3_short_desc', models.TextField(blank=True, null=True)),
                ('partic_evnt_1_cd', models.IntegerField(blank=True, null=True)),
                ('partic_evnt_1_short_desc', models.TextField(blank=True, null=True)),
                ('partic_evnt_2_cd', models.IntegerField(blank=True, null=True)),
                ('partic_evnt_2_short_desc', models.TextField(blank=True, null=True)),
                ('partic_evnt_3_cd', models.IntegerField(blank=True, null=True)),
                ('partic_evnt_3_short_desc', models.NullBooleanField()),
                ('bac_val', models.IntegerField(blank=True, null=True)),
                ('alchl_use_rpt_ind', models.IntegerField(blank=True, null=True)),
                ('drug_use_rpt_ind', models.IntegerField(blank=True, null=True)),
                ('strikg_partic_flg', models.IntegerField(blank=True, null=True)),
            ],
            options={
                'db_table': 'partic',
                'managed': False,
            },
        ),
        migrations.CreateModel(
            name='Vhcl',
            fields=[
                ('crash_id', models.IntegerField(blank=True, null=True)),
                ('vhcl_id', models.IntegerField(primary_key=True, serialize=False)),
                ('vhcl_coded_seq_no', models.IntegerField(blank=True, null=True)),
                ('vhcl_ownshp_cd', models.IntegerField(blank=True, null=True)),
                ('vhcl_ownshp_short_desc', models.TextField(blank=True, null=True)),
                ('vhcl_use_cd', models.IntegerField(blank=True, null=True)),
                ('vhcl_use_short_desc', models.TextField(blank=True, null=True)),
                ('vhcl_typ_cd', models.IntegerField(blank=True, null=True)),
                ('vhcl_typ_short_desc', models.TextField(blank=True, null=True)),
                ('emrgcy_vhcl_use_flg', models.IntegerField(blank=True, null=True)),
                ('trlr_qty', models.IntegerField(blank=True, null=True)),
                ('mvmnt_cd', models.IntegerField(blank=True, null=True)),
                ('mvmnt_short_desc', models.TextField(blank=True, null=True)),
                ('cmpss_dir_from_cd', models.IntegerField(blank=True, null=True)),
                ('vhcl_cmpss_dir_from_short_desc', models.TextField(blank=True, null=True)),
                ('cmpss_dir_to_cd', models.IntegerField(blank=True, null=True)),
                ('vhcl_cmpss_dir_to_short_desc', models.TextField(blank=True, null=True)),
                ('actn_cd', models.IntegerField(blank=True, null=True)),
                ('actn_short_desc', models.TextField(blank=True, null=True)),
                ('vhcl_cause_1_cd', models.IntegerField(blank=True, null=True)),
                ('vhcl_cause_1_short_desc', models.TextField(blank=True, null=True)),
                ('vhcl_cause_2_cd', models.IntegerField(blank=True, null=True)),
                ('vhcl_cause_2_short_desc', models.TextField(blank=True, null=True)),
                ('vhcl_cause_3_cd', models.IntegerField(blank=True, null=True)),
                ('vhcl_cause_3_short_desc', models.TextField(blank=True, null=True)),
                ('vhcl_evnt_1_cd', models.IntegerField(blank=True, null=True)),
                ('vhcl_evnt_1_short_desc', models.TextField(blank=True, null=True)),
                ('vhcl_evnt_2_cd', models.IntegerField(blank=True, null=True)),
                ('vhcl_evnt_2_short_desc', models.TextField(blank=True, null=True)),
                ('vhcl_evnt_3_cd', models.IntegerField(blank=True, null=True)),
                ('vhcl_evnt_3_short_desc', models.TextField(blank=True, null=True)),
                ('vhcl_speed_flg', models.IntegerField(blank=True, null=True)),
                ('vhcl_hit_run_flg', models.IntegerField(blank=True, null=True)),
                ('vhcl_sfty_equip_used_qty', models.IntegerField(blank=True, null=True)),
                ('vhcl_sfty_equip_unused_qty', models.IntegerField(blank=True, null=True)),
                ('vhcl_sfty_equip_use_unknwn_qty', models.IntegerField(blank=True, null=True)),
                ('vhcl_occup_cnt', models.IntegerField(blank=True, null=True)),
                ('strikg_vhcl_flg', models.IntegerField(blank=True, null=True)),
            ],
            options={
                'db_table': 'vhcl',
                'managed': False,
            },
        ),
    ]
znmeb commented 6 years ago

Meanwhile I'm searching the web for other ways to run Django in a container. :-(

znmeb commented 6 years ago

Closing - added a note to the README and added the generated files to .gitignore.